2010-11-24 8 views
4

このVisual Studioの制限を回避するために、正確にどのようにHOW以上に答えてきたいくつかの質問がありました:* WHY *はVisual StudioではGACのアセンブリへの参照を許可していませんか?

GAC Assembly Missing in Add Reference dialog How can I reference a dll in the GAC from Visual Studio?

MSDN documentationしかしこう述べています。

あなたがすることはできません グローバルアセンブリキャッシュ(GAC)から参照を追加してください。 厳密にはrun-tiの一部です私は 環境です。

このように、Visual Studioチームがこれを目的としていたようです。彼らはあなた自身を傷つけないようにこれをしたのだろうか?このようなVS extensionを使用してGACのアセンブリを参照することによってベストプラクティスを違反していますか?何か不足していますか?

コミュニティと再度確認していただき、ありがとうございます。

+1

あなたは明らかに.NETを使用しています。これは最高の(または一種の良い)プラクティスの*明確な違反です! :-) –

+0

非常に面白い;)あなたのプロフィールから判断すると、あなたはC++の人です。このようなことをどうやって扱いますか? – LWoodyiii

+3

彼はナッタです。すべてのC++開発者はロッカーから離れています。私を間違っていると証明する。 – Will

答えて

3

Sharp Develop(.NET用のオープンソースIDE)ではGAC参照を追加できます.Net 4ではGAC参照を追加できます。あなたは間違いなくGAC参照を追加することで自分自身を傷つけることはありません。私はそれを使用している開発者からの否定的なフィードバックはありません。

すぐにthis extensionにはもっとセクシーな機能があります。

+1

はい、残念ながら、MuseはVisual Studio 2012をサポートしていないようです。 – Thought

+1

@Thought:VS2012とVS2013をサポートする*非公式*の変更をダウンロードしてください(http://ge.tt/2COX9iS/v/1?c )。 –

1

GACは特定のアセンブリの複数のバージョンを持つことができるため、非常に複雑になります。参照したいバージョンのコピーが通常のフォルダにあることを要求する方が簡単です。

(ほとんどの時間を登録するにはCOMの日にあったように、それは痛みの同じくらいであるとして、あなたがGACを使用するべきではありません。)

+0

あなたの答えをありがとう。通常のフォルダでアセンブリを参照しても、複数のバージョンのアセンブリを管理するという問題は解決されないと思います。すべてのサードパーティ製アセンブリをローカルフォルダに保存すると、 "c:\ assemblies"というように、すべての開発者が正しいバージョンのサードパーティ製アセンブリをマシンにインストールしていることを確認する必要があります。間違ったバージョンを参照してください。デプロイメントと同じです...私がすべてのアセンブリを "c:\ assemblies"に置いていたら、問題は消え去らない...単に動かされるだけだ。 GACは、機能を追加したローカルフォルダです。 – LWoodyiii

+1

@LWoodyii、各アセンブリの正しいバージョンをソースコード管理システムにチェックインし、相対パスを使用してそれらを参照するだけです。 –

3

それは実際にあなたがこれをやってから停止しません。特に.NET 4.0では、[参照]タブを使用してc:¥windows¥microsoft.net¥assemblyにアクセスできます。シェルダイアログボックスから.NET 2.0 GACへのアクセスを停止するシェル拡張ハンドラは含まれていません。

しかし、それは本当に悪い考えです。 GACはデプロイメントの実装の詳細なので、GACのコンテンツが別のマシンのコンテンツと一致するとは限りません。参照アセンブリのみが、たとえばWindows Updateを通じてセキュリティ更新プログラムを入手したときに変更されない、安定した型定義のセットを提供できます。

これは、.NET 4.0にさらに関連しています。参照アセンブリは特別です。それらはもはやGACまたはc:\ windows \ microsoft.netにあるアセンブリのコピーではありません。メタデータはILのみで構成されています。これにより、Microsoftは、パブリックタイプを変更する更新プログラムをアセンブリに展開できます。 .NET 2.0サービスパック(WaitHandle.WaitOne(int)など)でひどく間違っていたもの。

+0

+1非常に思慮深い答え。いくつかのドキュメントのリンクを付けることはできますか?特に、ILなしの.Net 4.0リファレンスアセンブリについて。ありがとう! – LWoodyiii

+0

これは文書化されていません。リフレクターであなた自身のために見つけることができます。 –

関連する問題