0

DSL Tools ソリューションがあります。

このプロジェクトに弱い名前の参照を追加する必要があります。DSL Tools プロジェクトの DLL は厳密な名前が付けられているため、弱い名前の DLL は使用できません。

再コンパイルできないため、DLL を厳密な名前にすることはできません。

Dsl および DslPackage プロジェクトのプロパティに移動して、署名タブの [アセンブリに署名する] オプションのチェックを外して、DSL ツール プロジェクト DLL を弱い名前で作成しようとしました。

それから私はそれをコンパイルします。エラーリストには次のエラーが表示されます

"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 を使用できるようにすることです。この結果、私は自分の DSL Tools DLL を弱い名前にしようとしてきましたが、できません。

これを回避する方法について何か助けはありますか?

前もって感謝します、 ルイス・フィリペ

4

2 に答える 2

1

リフレクションでランタイムバインディングを使用することは良い解決策であり、機能します。それ以外に私が実装した他の解決策は、別の AppDomain を起動し、その AppDomain でアセンブリの読み込みを行い、必要なメソッドを実行することです。このアプローチの欠点は、余分な複雑さとパフォーマンスです。彼は実際に Visual Studio のプロセス空間で別の .net アプリケーションを起動しているので、彼が何をしているのかを本当に知る必要があります。利点は、ある程度の注意を払えば、型の安全性を完全に確保できることです。

于 2009-03-19T21:17:46.437 に答える
1

上記の回答を除いて、Visual Studio のすべてのアドインは厳密な名前にする必要があります。

実行時にアセンブリをロードし、リフレクションを使用してメソッドを呼び出すことで、いくつかの問題を回避できます。

よろしく、 ルイス

于 2008-12-12T16:04:59.870 に答える