アセンブリはGACに物理的にどこにインストールされますか?
-
03-07-2019 - |
質問
プロジェクトでビルドされたアセンブリをエクスポートしたい。しかし、それらは物理的にどこに保存されますか?
解決
質問を書いた後、実際にこの投稿を見つけました。それは本当に良い説明です:
に移動すると、それらを表示できます
c:\ windows \ assembly
Explorerを使用すると、適切にフォーマットされたアセンブリのリストが表示されます。
このビューを担当するシェル拡張は、GAC内のアセンブリだけでなく、ngen.exeでプリコンパイルされたネイティブバージョンのアセンブリも表示します。
しかし、ファイルは実際にはここに保存されません-シェル拡張は単にその本当の場所をマスクします。コマンドプロンプトで同じディレクトリに移動すると、ファイルが実際に保存されている場所を確認できます。
この場所には、GACという名前のサブディレクトリを含むいくつかのサブディレクトリがあります。ここには、いくつかの層のハッシュコードとアセンブリ名の下に、物理アセンブリと、とりわけ強力な名前を含む旧式の.INIファイルが存在します。 GACは不透明であるため、変更を加えることに注意してください。
他のヒント
これらは%systemroot%の assembly という名前のフォルダーに保存されます
%SystemRoot%変数は、Microsoft Windows NTおよびその派生製品に見られる特別なシステム全体の環境変数です。その値は、ドライブとパスを含むシステムフォルダーの場所です。
ドライブは%SystemDrive%と同じであり、クリーンインストールのデフォルトパスはオペレーティングシステムのバージョンによって異なります。デフォルトでは、クリーンインストールの場合:
* Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
* Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
* Windows NT 3.5x uses \WINNT35
(ウィキペディアから)
GACの物理的な場所は、%WINDIR%の下のAssemblyディレクトリです。f.e。
c:\windows\assembly
Explorerまたはgacutilプログラムを使用して、アセンブリをgacにコピーできます。
いいえ、物理的なアセンブリは" C:\ Windows \ assembly"に保存されません。 アセンブリへの参照のみがそこに保存されます。 たとえば、アセンブリ" System.Windows.Forms.dll" (および.NET Frameworkアセンブリの大部分) 物理的に" C:\ Windows \ winsxs"に保存されます多くのプラットフォームで最適化された多くのエディション (エクスプローラで" C:\ Windows \ winsxs"に移動し、検索ボックスに" System.Windows.Forms.dll"と入力するだけです)。 たとえば、厳密な名前のアセンブリを作成し、GACに登録できますが、物理的な場所はアセンブリファイルを配置する場所です。 (例:" C:\ Users \%username%\ Documents \ Visual Studio 2008 \ Projects \ YourAssemblyProjectName \ YourAssemblyProjectName \ bin \ Debug"-VSプロジェクトのデフォルトディレクトリ)。 さらに、GACではアセンブリへの参照のみが保存されるため、GACに登録されているアセンブリを再構築すると、アセンブリを使用しているアセンブリは、GACから参照することにより、アセンブリの再構築されたバージョンも使用します。