2013-02-15 18 views
8

これでいくつかの投稿を見つけようとしましたが、私の特定の質問に答えるものはたくさんあります。Visual StudioでGACからDLLを参照するには

私は私のプロジェクトでは、いくつかのDLLのを追加しようとしていますが、それらのいくつかはから来ている:

C:\Windows\Microsoft.NET\Framework\v3.5\XXX.YYY.dll 

と私はこれがGACから来るべきである期待。

Visual StudioでDllを参照することをお勧めします。

答えて

23

これは動作しません。 Project + Add Referenceを使用すると、参照アセンブリが常に追加されます。これはです。 GACのアセンブリです。 GACは実行時の実装の詳細であり、プログラムの実行時にアセンブリを提供するためだけに使用されます。

このように動作することは非常に重要です。マシン上のGACの内容は、ユーザーのマシン上のGACの内容と一致しません。ユーザのマシンがプログラムを正しく実行するように正しく構成されていない場合に、リファレンスアセンブリをユーザのGACコンテンツにマッピングすることが、適切な診断で確実に行われるように、多くのDLL Hell対策が用意されています。

これは、エクスプローラでc:\ windows \ assemblyに移動したときにGACフォルダを直接見ることができないためです。シェル拡張ハンドラは、GAC-edアセンブリを参照アセンブリとして追加するようなミスを防ぐために詳細を隠します。この拡張ハンドラは.NET 4アセンブリにはインストールされていませんが、c:\ windows \ microsoft.net \ assemblyを見て、GACの構造を見ることができます。そこから参照を追加することは今や大丈夫だと仮定しないでください。参照アセンブリは.NET 4ではさらに重要ですが、ランタイムアセンブリとはまったく異なります。

C:\ Windows \ Microsoft.NET \ Framework \ v3.5に格納されている参照アセンブリは完全に標準であり、これはSystem.Core.dllなどの.NET 3.5固有の参照アセンブリのホームディレクトリです。 .NET 4プロジェクトの場合、参照アセンブリはc:\ program files \ referenceアセンブリに格納されます。でなく、C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319となります。 this answerをチェックして、正確な参照アセンブリを使用しないことによって引き起こされる不慮の不具合の種類を確認してください。

+4

正解、それは正しい答えとして受け入れる必要があります:) –

+0

これは私のために働いた(私の記事を参照してください)[リンク(http://stackoverflow.com/questions/444655/how-can-i-reference- a-dll-in-the-gac-from-visual-studio) –

1

これらのアセンブリは、.NET Framework 3.5のアセンブリです。アセンブリキャッシュが

%SystemRoot%\assembly 

に位置していますあなたは一緒にあなたのプロジェクトに(ページの最後をスクロール).NET Framework 3.5を配布することができます。あなたがVSセットアッププロジェクトを使用している場合は、単にプロパティページを使用して参照することができます。

これらのアセンブリを参照するには、[参照]> [参照の追加]を右クリックし、[.NET]タブからアセンブリを簡単に選択できます。 GACアセンブリの参照については、this questionを参照してください。

関連する問題