C # DLL версия конфликта - PullRequest
       36

C # DLL версия конфликта

0 голосов
/ 10 июня 2009

У меня есть такой проект:

Тестовый раствор

Project TestApplication
    References: TestFunctions.dll(ver 1.0.0.0),Project TestDLL
Project TestDLL
    References: TestFunctions.dll(ver 1.0.0.1)

В приложении, когда я выполняю вызов TestDLL.Methodx () внутри него вызывает TestFunctions.HelloWorld (), но дает исключение MissingMethodException потому что TestFunctions.HelloWorld () существует только в TestFunctions.dll (версия 1.0.0.1) и он пытается вызвать функцию в dll версии 1.0.0.0 ...

Как заставить его вызвать нужную версию?

Я пытался использовать "внешний псевдоним" безрезультатно ...

Ответы [ 5 ]

2 голосов
/ 10 июня 2009

Переименование ссылочных dll-файлов в TestFunctions1.0.0.0.dll и TestFunctions1.0.0.1.dll

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

0 голосов
/ 15 июня 2009

В конце я решил это, как и в моем другом вопросе, переименовав TestFunctions.dll в соответствии с проектом, который его использует. Это больше ручная работа, но, по крайней мере, это работает.

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

0 голосов
/ 10 июня 2009

Вы должны подписать свои сборки (дать им строгое имя) и поместить их в GAC, или, если вы используете Visual Studio, вам придется встроить две разные версии в разные выходные папки, и установите ссылки на путь к файлу, а не на вывод проекта. Затем в свойствах для ссылки вы можете изменить Определенную версию на true.

0 голосов
/ 10 июня 2009

Единственный способ, которым вы можете «заставить» его вызывать правильную DLL-библиотеку, - это указать правильную DLL-библиотеку, т.е. вам нужно удалить ссылку на v1.0.0.0 и добавить ссылку на v1.0.0.1

0 голосов
/ 10 июня 2009

Я полагаю, что Visual Studio может одновременно использовать только одну версию DLL.

Возможно, попробуйте загрузить версию 1.0.0.1 во время выполнения - Assembly.Load () - чтобы решить эту проблему.

...