Как ссылаться на разные сборки с одинаковыми именами? - PullRequest
3 голосов
/ 16 августа 2010

У меня есть 2 разные сборки с одним и тем же именем, которые мне нужно добавить в мой проект.

Когда я пытаюсь добавить обе ссылки в проект, Visual Studio сообщает мне, что на сборку уже ссылаются (посколькууже сборка с тем же именем).

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

Примечание: сборки не мои, поэтому яне могу изменить их содержимое.

Ответы [ 2 ]

4 голосов
/ 16 августа 2010

Если они строго подписаны и имеют разные открытые ключи, возможно, вы можете попробовать это:

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

Сложность состоит в том, что если обе сборки имеют одинаковое имя файла, вы не можете иметь их в одной папке во время выполнения. Поскольку они строго подписаны, вы можете поместить их обоих в глобальный кэш сборок (GAC) или вы можете поместить одну из двух в подпапку во время выполнения и добавить эту подпапку в путь поиска.

Удачи!

1 голос
/ 16 августа 2010

Другой вариант - использовать ildasm для дизассемблирования одной из сборок, а затем использовать ilasm для сборки ее с другим именем.

Например, чтобы добавить 2 ссылки на одну и ту же сборку, в моей системе я делаю следующее (Windows 7, 64-битная, поэтому измените ваши пути соответственно)

d:\Sandbox>"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe" /all /out=SandboxLib2.il SandboxLib.dll

с последующим

d:\Sandbox>"c:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" /dll SandboxLib2.il

После этого у меня есть другая сборка, которая называется SandboxLib2.dll. Несмотря на то, что это та же сборка, что и в начале, я могу добавить ссылки на обе библиотеки DLL в моем проекте.

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