1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

PowerShell で .NET Framework を使用して、グローバルアセンブリキャッシュにアセンブリを追加する。

2022-02-04 20:24:52

通常、アセンブリをグローバルアセンブリキャッシュ(GAC)に追加するには、以下のメソッドを使用します。 GacUtilツール . 指定したパスのアセンブリをGACに追加するには、/iパラメータを使用するだけです。

しかし、GacUtilは.Net Frameworkの一部ではなく、Windows SDKと一緒に配布されているため、マシンに.Netはインストールされているが、GacUtilが見つからないという事態が発生する可能性がある。

PowerShellでは、.Netのクラスライブラリを利用することで、GacUtilを介さずに直接これを実現することができる。具体的なコードは以下の通りである。

[Reflection.Assembly]::LoadWithPartialName("System.EnterpriseServices") > $null
[System.EnterpriseServices.Internal.Publish] $publish =
 New-Object System.EnterpriseServices.
$publish.GacInstall("<Full path to DLL>")

また System.EnterpriseServices.Internal.Publish(システム・エンタープライズ・サービス・インターナル・パブリッシュ も RegAsm と同様の機能を提供します。詳細は MSDN を参照してください。