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#などで、同じようにコピーする方法を実装できます。
説明は以上です。間違い、指摘点等がありましたらご連絡ください。