質問
強い名前なしでライブラリを参照する方法はありますか?参照と再構築ソリューションのアセンブリへの参照を追加すると、すべてが問題ありませんが、このアセンブリソリューションからクラスを呼び出すと、構築されません。
出力によると、参照されたアセンブリには強い名前が必要だと言います。最良の解決策は何ですか?強力な命名ライブラリは望ましくありません。
解決
ここにある問題は、参照を追加しようとしているアセンブリが強い名前で署名されているが、参照しようとしているアセンブリは署名されていないことだと思います。強い名前のアセンブリは、他の強い名前のアセンブリのみを参照できます。
参照しているアセンブリに署名するか、それを参照しているアセンブリに署名しないでください。
実際にクラスを呼び出すときにエラーが表示される理由は、実際に参照されているアセンブリを呼び出すコードがない場合、コンパイラがコンパイルされた出力で参照を削除するためです。
それがあなたの場合です 本当にできません 参照されている人に強い名前を追加するか、参照をしている人から強い名前を削除します(残念なことはあります)。共通のベースまたはインターフェイス - まったく理想的ではありません。またはさらに悪いことに、実際に反射を介してそれを呼び出すか、 dynamic
.
他のヒント
強い名前の全体的なポイントは、DLLがロードされていることを知っていることです。強い名前を追加することはできません 君の dllあなたが強い名前ではないものを参照する場合、 なんでも あなたが考えているDLLの代わりに(名前が一致する限り)ロードすることができます。これは、強い名前が提供することを意図しているという保証を完全に打ち負かします。
だから(1つ):
- DLLに強い名前を追加しないでください(ほとんどの内部のものについては、必要はありません)
- また; DLLを再構築して、強い名前で参照してください
- また; Reflection(Yuck)を介して追加のDLLをロードする