10

.NETアセンブリをGACにインストールするには、小さなアプリまたはスクリプトを作成する必要があります。これを行うには、次のようないくつかの方法があることを読みました。

  • を使用してgacutil.exe
  • 次のコード行を実行します。

    new System.EnterpriseServices.Internal.Publish().GACInstall("Foo.dll");

ただし、マシン上に適切なディレクトリを作成し、アセンブリをそのディレクトリにコピーした場合はどうなりますか?GACディレクトリの構造は次のとおりです。 C:\Windows\assembly\GAC_MSIL\Foo\<version#>__<public token>\Foo.dll

上記の2つの方法は、フォルダー構造を作成してアセンブリを配置する以外に、何か特別なことをしますか?

4

2 に答える 2

11

既存の方法 (あなたが言及した方法など) を使用することを強くお勧めします。これらの方法は Microsoft によってサポートおよび保守されており、今後のリリースでも引き続き機能するためです。

Process Monitorgacutil.exeでざっと見てみると、単にファイルをコピーするだけではないことがわかります。

  • 並行性の問題 (例: 一時ファイル、ロックWINDOWS\assembly\GACLock.datなど)
  • 通知 (例HKLM\SOFTWARE\Microsoft\Fusion\GACChangeNotification\...)
  • 索引付け (例: HKLM\SOFTWARE\Microsoft\Fusion\NativeImagesIndex...)
  • 検証 (厳密な名前など)

のラッパーは、この古いブログ投稿System.EnterpriseServicesと非常によく似ており、問題なく動作するはずです。

于 2009-09-22T17:23:15.313 に答える
5

最近、エンタープライズ環境の数十台のサーバーに対してこれを実行する必要がありました。Wixを使用して非常に単純なMSI(真剣に-5分の作業)を構築し、グループポリシーを通じてすべてのサーバー(および開発ボックス)に公開しました。

于 2009-09-22T17:36:59.390 に答える