- ベストアンサー
VisualStudio2005
.NETのアセンブリって C:\windows\assembly\ のところを開くと、あると思うのですが、そこをエクスプローラーで開くと表示されているけど、VBならImports、C#ならusingでnamespaceを指定できないのですが、私の考えが間違っているのでしょうか? C:\windows\assembly\ のところがGACで、あそこにいろいろなバージョンのファイルがおけるて、あそこにあれば、Importsなりusingで指定できると思っていたのですが違うのでしょうか? プロジェクトの参照の追加で指定しようとしても、上記のところのは指定できず、ほかのフォルダにあるファイルでないと指定できないのです。 お分かりになる方よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 私自身は自分でGACにアセンブリを登録したことがないので、今のところGACに登録されている.NETアセンブリが見つからないという件は経験したことがありません。 なので、見つからない場合は[参照タブ]で直接参照追加するのが普通と思っていました。^^; MicrosoftVisualStudio2005で開発されているなら以下のリンクを開いて見て下さい。 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_vsprojopt/html/2feb0fe2-0805-4cc9-8cba-b0315849dfb7.htm このページの中に アセンブリがグローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) にインストールされていたとしても、[参照の追加] ダイアログ ボックスに、すべてのアセンブリが自動的に表示されるわけではありません。[参照の追加] ダイアログ ボックスはパスに基づいており、表示するアセンブリの場所を示すレジストリ キーを追加する必要があります。 というのがあったので、おそらくこちらが原因ではないでしょうか?
その他の回答 (1)
- zzz_sheep
- ベストアンサー率21% (36/166)
.NETアセンブリの参照の追加は [プロジェクト]-[参照の追加]-[.NETのタブ]から行います。 GAC(C:\Windows\assembly\)には .NET以外のアセンブリも登録されています。 エクスプローラでGACを開いたとき、 プロセッサのアーキテクチャがMSILのものが.NETアセンブリです。 .NET以外のアセンブリならコンパイル後の.NETアセンブリから外部参照する形になるので、参照するアセンブリがGACに登録されていないアセンブリなら、コンパイル後の.NETアセンブリと同じディレクトリ内にある必要があります。
補足
回答ありがとうございます。 現状の状況としては、 目的のアセンブリ:エクスプローラでGACに表示されているが、[プロジェクト]-[参照の追加]-[.NETタブ]に表示されていない。 回避方法としては、ハードディスク内を目的のアセンブリ名で検索して、[参照タブ]で直接参照追加する。 なのですが、これが普通なのでしょうか? 自分としてはGACに登録されていれば、すぐにImportsやusingで使えたほうが使いやすいしわかりやすいかと思うのですが。そうでないと複数のバージョンがハードディスク内にあった場合、複数のPCで開発していた場合、参照設定のミスが生じやすいかと思うのです。GAC内なら複数のバージョンでも一覧にバージョンも明記されているので間違う確率も低くなると思うのですが。 もうしばらく、回答を待ちたいと思います。
お礼
再度の回答ありがとうございます。 表示されないのは、そういう理由もあるのですね。 ただ、GACにあるファイルでなくて、インストールの元になっているファイルのパスで動くとなると、GACの意味がないのでは?という疑問がでてきます。 これについては別の質問で再度聞いてみたいと思います。 当初の疑問はクリアされたのでここで〆たいとおもいます。 ありがとうございます。