DSL Tools: Как создать DLL со слабым именем - PullRequest
0 голосов
/ 04 декабря 2008

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

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

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

Я попытался сделать DLL-библиотеку проекта DSL со слабым именем, перейдя в свойства проекта 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 со слабым именем, но не могу.

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

Большое спасибо заранее, Луис Филипе

Ответы [ 2 ]

1 голос
/ 20 марта 2009

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

1 голос
/ 12 декабря 2008

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

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

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

...