C# とは直接関係ありませんが、 GAC (グローバルアクセスキャッシュ)内のファイルをPowerShell を使用してコピーするサンプルを掲載します。実際は.NET のAssemblyクラスを使用しているので、C#に書き換えるのは簡単だと思います。

確認環境

  • 動作環境:Windows Server 2003
  • PowerShell 1.0

1. GACのアセンブリのdllを取り出す

Windows PowerShell のプロンプトを起動して処理を行います

1.1 アセンブリのロード

PowerShellのプロンプトを起動して、アセンブルをロードします。次のようにSystem.ServiceModel.Web.dll をコピーします。非推奨のAPIを使用しているので、実際にはAssembly.Load メソッドを使用したほうがよいかもしれませんが、LoadWithPartialName がお手軽に使用できたので、こちらを使用しています。

PS C:\> $asm = [reflection.assembly]::LoadWithPartialName("System.ServiceModel.Web")

1.2 アセンブリのコピー

ロードしたアセンブリを Copy-Item コマンドレットを使用してローカルファイルとしてコピーします。

PS C:\> Copy-Item -path $asm.Location -destination C:\System.ServiceModel.Web.dll

2. まとめ

Copy-Item の部分をSystem.IO.FIile クラスを使用してコピーするようにすれば C#などで、同じようにコピーする方法を実装できます。

説明は以上です。間違い、指摘点等がありましたらご連絡ください。