.NETはアセンブリを処理しています。すべてのEXEまたはDLLファイルはアセンブリと見なされます。
アセンブリを必要とする他の.NETコードによってマシン上でグローバルに認識されるように(もちろんローカルにコピーせずに)、アセンブリをグローバルアセンブリキャッシュ(別名GAC)に配置できます。
GACにアセンブリだけを配置することはできません。セキュリティ上の理由から、アセンブリをGACに配置するには、強く入力する必要があります。関連性がないため、ここではアセンブリに署名するプロセスには入りませんが、署名プロセスの一部は公開鍵を取得することです。次に、この同じキーを任意の数のアセンブリで使用できるため、アセンブリには1つのキーがありますが、1つのキーは多くの異なるアセンブリで共有される場合があります。
.NETが強く型付けされたアセンブリをロードする場合、次の3つのパラメーターを取得する必要があります。
- アセンブリ名。
- アセンブリバージョン。
- アセンブリ公開鍵。
これらのいずれかが欠落しているか間違っていると、.NETはアセンブリを見つけることができないというエラーをスローします。
最後の質問です。既知のアセンブリ名を指定して、その公開鍵トークンを見つける方法を教えてください。
4.0より前のすべてのシステムアセンブリは、Windows Button+Rを入力%windir%\assembly
してから、を入力することで見つけることができますENTER。インストールされているアセンブリの完全な表が、それぞれ名前、バージョン、およびキーとともに表示されます。たとえば、ここの元の質問に投稿されたキーは、実際にSystem.Drawingアセンブリに属していることがわかります。
4.0フレームワークでの重大な変更により、アセンブリのGACの場所がに変更%windir%\Microsoft.NET\assembly\
され、わかりやすいリスト形式ではなく、フォルダーとファイルとして表示されるようになりました。新しいGACの各アセンブリには、独自のフォルダーがあり、その名前からパブリックトークンを抽出できます。たとえば、System.Webには次のサブフォルダが含まれています。
v4.0_4.0.0.0__b03f5f7f11d50a3a
つまり、キーはb03f5f7f11d50a3aであり、.resx
System.Webアセンブリを参照している場合は、これをファイルに配置する必要があります。(これはSystem.Drawingキーと同じですが、ここでは実際には関係ありません)