2012-05-10 1 views
0

Проект имеет собственный раздел раздела конфигурации с именем MyNamespace.MyConfig. Класс хранится в библиотеке C# MyNamespace.MyAssembly.dll.Пользовательский раздел App.config с конфликтующими именами файлов

Проект имеет также консольное приложение. Клиент хочет, чтобы он назывался так же, как и dll, то есть MyNamespace.MyAssembly.exe.

App.config файл имеет следующий Definiton:

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly"/> 

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

Первая идея состояла в том, чтобы быть более точным, о названии сборки, так что ConfigurationManager знает, что он должен выглядеть в библиотеке DLL, а не в ехе:

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly.dll"/> 

, к сожалению, это не помогает, приложение говорит, что он не может найти сборку с именем MyNamespace.MyAssembly.dll.

Единственный способ заставить его работать, это переименовать сборку приложения в MyNamespace.MyAssembly.Console, но клиент не согласен с этим.

Как сообщить ConfigurationManager, что он должен искать мой класс MyNamespace.MyConfig в MyNamespace.MyAssembly.dll, а не в MyNamespace.MyAssembly.exe?

ответ

1

К сожалению, в этой ситуации нет возможности проинструктировать .NET для поиска .dll. Даже с полным именем сборки, как

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...."/> 

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

enter image description here

Затем используйте

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssemblyConfig /> 

в app.config.

 Смежные вопросы

  • Нет связанных вопросов^_^