Действительно ли возможно переключить файл конфигурации приложения во времени выполнения для приложения.NET?

//have to add +1 so I don't get 0

Нет, действительно нет.

В Java массивы основаны на 0. Значение массива из 11 элементов имеет индексы 0 .. 10.

Random.nextInt(n) возвращает значение между 0 и n-1.

Поэтому выражение ((die1.nextInt(6)+1)+(die2.nextInt(6)+1)) будет между 2 .. 12.

Либо увеличьте размер массива до 13, чтобы подгонять 12 (первые 2 элемента останутся неиспользованными), либо просто удалите +1 's:

    Random die1 = new Random(), die2 = new Random();
    int [] counters = new int [11];
    for (int i = 0; i <1001; i++){
        ++counters[die1.nextInt(6)+die2.nextInt(6)];
    }

Также вы можете' t распечатать массив с помощью print (). Возможное решение состоит в том, чтобы печатать каждый элемент отдельно:

    for (int i = 0; i < counters.length; ++i) {
        System.out.print((i+1) + ":" + counters[i] + " ");
    }
    System.out.println();
9
задан Morgan Cheng 28 October 2008 в 08:37
поделиться

4 ответа

Вся вышеупомянутая работа хорошо, если необходимо заменить только раздел AppSettings.

В случае, если необходимо работать с различными файлами конфигурации (все разделы), Вы могли бы хотеть рассмотреть запускающееся заявление с помощью хоста, который создает домен приложения для главного приложения и устанавливает другой файл конфигурации в зависимости от параметров, в которых Вы передали.

Вот код, который работал на меня:

        AppDomainSetup setup = new AppDomainSetup();
        setup.ApplicationBase = "file://" + System.Environment.CurrentDirectory;
        setup.DisallowBindingRedirects = true;
        setup.DisallowCodeDownload = true;

        if (args.Length != 0 && args[0].Equals("-test"))
        {
            setup.ConfigurationFile = "PATH_TO_YOUR_TEST_CONFIG_FILE";
        }
        else {
            setup.ConfigurationFile = "PATH_TO_YOUR_LIVE_CONFIG_FILE";
        }

        AppDomain domain = AppDomain.CreateDomain("FRIENDLY_NAME", null, setup);
        domain.ExecuteAssembly("YourMainApp.exe");
11
ответ дан 4 December 2019 в 11:44
поделиться

Код из MSDN

static void DisplayMappedExeConfigurationFileSections()
{
    // Get the application configuration file path.
    string exeFilePath = System.IO.Path.Combine(
        Environment.CurrentDirectory, "ConfigurationManager.exe.config");
    // HERE !!!     
    // Map to the application configuration file.
    ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
    configFile.ExeConfigFilename = exeFilePath;

    Configuration config =
        ConfigurationManager.OpenMappedExeConfiguration(configFile,
        ConfigurationUserLevel.None);

    // Display the configuration file sections.
    ConfigurationSectionCollection sections = config.Sections;

    Console.WriteLine();
    Console.WriteLine("Sections in machine.config:");

    // Loop to get the sections machine.config.
    foreach (ConfigurationSection section in sections)
    {
        string name = section.SectionInformation.Name;
        Console.WriteLine("Name: {0}", name);
    }

}
4
ответ дан 4 December 2019 в 11:44
поделиться

Полученный от того, Как использовать Конфигурацию. GetSection () и ConfigurationManager. OpenMappedExeConfiguration ()

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"C:\Inetpub\Test\Config\Dev.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings");
string ConfigVersion = section.Settings["ConfigVersion"].Value;
3
ответ дан 4 December 2019 в 11:44
поделиться

Да Вы должны будете использовать ExeConfigurationFileMap

0
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: