DSLツール:弱名のDLLを作成する方法
-
19-08-2019 - |
質問
DSLツールソリューションがあります。
このプロジェクトに弱い名前の参照を追加する必要があります。 DSL ToolsプロジェクトDLLは厳密な名前が付けられているため、弱い名前のDLLは使用できません。
再コンパイルできないため、DLLを厳密な名前にすることはできません。
DSLおよびDslPackageのプロジェクトプロパティに移動して、DSL ToolsプロジェクトDLLの名前を弱くし、オプション<!> quot; Sign the assembly <!> quot;のチェックを外しました。 [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を呼び出すように構成されたオプションはありません。 <!> quot; gacutil.exe <!> quot;のすべてのファイルを調べました。しかし、何も見つかりませんでした。
本当に欲しいのは、厳密な名前を付けることができない弱い名前のDLLを使用できるようにすることです。 この結果、DSL Tools DLLの名前を弱くしようとしてきましたが、できません。
これを回避する方法についてのヘルプはありますか?
事前に多くの感謝、 Lu <!>#237; s Filipe
解決
反射を伴うランタイムバインディングの使用は、優れたソリューションであり、機能します。それ以外に実装した他のソリューションは、別のAppDomainを起動し、そのAppDomainがアセンブリの読み込みを実行し、必要なメソッドを実行することです。このアプローチの欠点は、余分な複雑さとパフォーマンスです。 Visual Studioのプロセススペースで個別の.netアプリケーションを実際に起動する際に、彼が何をしているかを本当に知る必要があります。利点は、注意を払うと、タイプセーフがずっと得られることです。
他のヒント
上記の回答を除き、 Visual Studioのすべてのアドインには厳密な名前を付ける必要があります。
実行時にアセンブリをロードし、リフレクションを使用してメソッドを呼び出すことにより、いくつかの問題を回避できます。
よろしく、 Lu <!>#237; s