Переименование и перемещение конфигурации консоли C # - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь понять, как заставить это работать. У меня есть консольное приложение c #. После сборки я получил файл конфигурации по умолчанию myApp.exe.config Я хочу добиться следующего:

  1. Я хочу переименовать файл конфигурации в myApp.xml
  2. Я хочу положить его в другое местоположение, управляемое некоторой системой планирования.

Я сделал это, выполнив следующее:

    private static void resetConfig()
    {
        var directory = System.IO.Directory.GetCurrentDirectory();
        var filename = $"{directory}\\myApp.xml";
        if (File.Exists(filename))
        {
            AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", filename);

            typeof(ConfigurationManager)
                .GetField("s_initState", BindingFlags.NonPublic |
                                         BindingFlags.Static)
                .SetValue(null, 0);

            typeof(ConfigurationManager)
                .GetField("s_configSystem", BindingFlags.NonPublic |
                                            BindingFlags.Static)
                .SetValue(null, null);

            typeof(ConfigurationManager)
                .Assembly.GetTypes()
                .Where(x => x.FullName ==
                            "System.Configuration.ClientConfigPaths")
                .First()
                .GetField("s_current", BindingFlags.NonPublic |
                                       BindingFlags.Static)
                .SetValue(null, null);
        }
    }

однако недавно я обновил некоторые пакеты. И я получил следующую ошибку при запуске.

Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку 'SomePackage, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = f3619abdd9aa739d' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Разница в конфигурации, которую я заметил после обновления пакета, заключается в добавлении некоторого нового раздела времени выполнения:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="SomePackage" publicKeyToken="f3619abdd9aa739d" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.2.1.2" newVersion="6.2.1.2" />
  </dependentAssembly>
</runtime>

Кто-нибудь знает, как исправить вышеуказанную ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...