2008-12-04 16 views
0

我有一個DSL工具解決方案。DSL工具:如何創建弱命名的DLL

我需要爲這個項目添加一個弱命名的引用。 由於DSL Tools項目DLL名稱很強,我無法使用弱名稱的DLL。

我不能讓強名稱的DLL,因爲我不能重新編譯它。

我試圖通過轉到Dsl和DslPackage項目屬性使我的DSL工具項目DLL名稱變弱,並取消選中Sigining選項卡中的「Sign the assembly」選項。

然後我編譯它。 錯誤列表提供了以下錯誤

"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錯誤顯示,因爲這:

​​

我不知道爲什麼以及如何調用gacutil.exe。 我查看了項目和解決方案屬性,沒有配置選項來調用gacutil.exe。 我甚至在每個文件裏面查看「gacutil.exe」,但是我什麼也沒找到。

我真正想要的是能夠使用弱命名的DLL,我不能強名。 由於這個原因,我一直在試圖讓我的DSL工具DLL名字很薄弱,但我不能。

任何幫助我如何解決這個問題?

提前許多感謝, 路易斯·菲利佩

回答

1

使用運行時與反思結合是一個很好的解決方案和作品。除此之外,我實現的另一個解決方案是啓動一個單獨的AppDomain,並讓該AppDomain執行程序集的加載並運行任何您想要的方法。這種方法的缺點是額外的複雜性和性能。一個人真的必須知道他在做什麼,因爲他正在實踐中在Visual Studio的流程空間中啓動一個單獨的.net應用程序。好處是,小心一點,你可以一路獲得類型安全。

1

通過上面寫的答案外, 所有加載項的Visual Studio必須是強名稱。

可以通過在運行時加載程序集並使用反射調用方法來解決一些問題。

問候, 路易斯