app.config зависимая сборка не работает - PullRequest
8 голосов
/ 27 июля 2011

Я хотел бы напрямую ссылаться на Dll, которые используются во время компиляции / выполнения. Мой макет программы такой: Консоль Exe запускает Winform DLL. Эта DLL использует кучу DLL для выполнения. Appconfig находится в проекте winform dll. Основываясь на некотором прочтении, winll dll ищет неправильный app.config? Я намерен выполнить мою DLL, используя Assembly.LoadFrom ();

Я создал файл app.config и добавил следующие строки в раздел

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="CommonConversions"
                              publicKeyToken="null"
                              culture="neutral" />
            <codeBase version="1.0.0.0"
                      href="file://C://BMS_ACTD//bin//DX//Globals//CommonConversions.dll"/>
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="GlobalConstants"
                              publicKeyToken="null"
                              culture="neutral" />
            <codeBase version="1.0.0.0"
                      href="file://C://BMS_ACTD//bin//DX//Globals//GlobalConstants.dll"/>
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="MessageInstance"
                              publicKeyToken="null"
                              culture="neutral" />
            <codeBase version="1.0.0.0"
                      href="file://C://BMS_ACTD//bin//DX//Globals//MessageInstance.dll"/>
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="MessageInterface"
                              publicKeyToken="null"
                              culture="neutral" />
            <codeBase version="1.0.0.0"
                      href="file://C://BMS_ACTD//bin//DX//Globals//MessageInterface.dll"/>
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="ToolsInterface"
                              publicKeyToken="null"
                              culture="neutral" />
            <codeBase version="1.0.0.0"
                      href="file://C://BMS_ACTD//bin//DX//Globals//ToolsInterface.dll"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Местоположение определенно правильное. DLL не имеют строгого имени, поэтому publicKeyToken = "null". все мои версии 1.0.0.0. Когда я смотрю на свойства моей указанной библиотеки DLL, культура пуста. Должен ли мой быть так же? Есть что-нибудь, что, кажется, я делаю неправильно?

1 Ответ

4 голосов
/ 03 мая 2013

App.config не должен использоваться на dll, а только с исполняемым файлом.

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

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

Что вам СЛЕДУЕТ сделать, это поместить соответствующую конфигурацию в файл конфигурации exe.

Обновление

Дополнительная информация содержится в следующем вопросе: Файл конфигурации DLL C #

...