Инструменты DSL:Как создать библиотеку DLL со слабым именем

StackOverflow https://stackoverflow.com/questions/341348

Вопрос

У меня есть решение DSL Tools.

Мне нужно добавить ссылку со слабым именем к этому проекту.Поскольку библиотека DLL проекта DSL Tools имеет сильное имя, я не могу использовать библиотеку DLL со слабым именем.

Я не могу присвоить библиотеке DLL строгое имя, потому что я не могу ее перекомпилировать.

Я попытался сделать свою библиотеку DLL проекта DSL Tools со слабым именем, перейдя в свойства проекта Dsl и DslPackage и сняв флажок "Подписать сборку" на вкладке Sigining.

Затем я компилирую его.В списке ошибок отображается следующая ошибка

"gacutil.exe" exited with code 1

Глядя на окно вывода VS2005, я вижу, что вызывается gacutil

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"

После этого я воспользовался командной строкой, и ошибка gacutil.exe отображается следующим образом:

Z:\>"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe" -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"
Failure adding assembly to the cache: Attempt to install an assembly without a strong name

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

Чего я действительно хочу, так это иметь возможность использовать библиотеку DLL со слабым именем, которую я не могу сделать с сильным именем.В результате этого я пытался сделать мою библиотеку DLL DSL Tools со слабым именем, но у меня не получается.

Любая помощь о том, как я могу обойти это?

Заранее большое спасибо, Luís Filipe

Это было полезно?

Решение

Использование связывания во время выполнения с отражением является хорошим решением и работает. Другое решение, которое я реализовал, кроме того, которое заключается в запуске отдельного домена приложений, при котором этот домен приложений выполняет загрузку сборки и запускает любые методы, которые вы хотите. Недостатком этого подхода является дополнительная сложность и производительность. Человек действительно должен знать, что он делает, поскольку он на практике запускает отдельное приложение .net в пространстве процессов Visual Studio. Плюс в том, что с некоторой осторожностью вы можете полностью обеспечить безопасность типов.

Другие советы

За исключением ответа, написанного выше, Все надстройки для Visual Studio должны иметь строгие имена.

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

С уважением, Луис

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top