豚吐露@wiki

GAC内のDLLを手に入れる方法

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

GAC内のDLLを手に入れる方法

Windows Server 2008R2
Windows 7-64bit Professional
Visual Studio 2008 Professional

■GACからDLLを取得する
エクスプローラで『C:\Windows\assembly』を見る。server側のGAC内で対象を探す。

で、コマンドプロンプト起動。
エクスプローラでは表示方法変わってんでダメらしい。(´・ω・`)
> cd C:\Windows\assembly
> dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は C4AC-D2B1 です

 C:\Windows\assembly のディレクトリ

2010/11/21  17:16    <DIR>          GAC_32
2015/10/14  17:51    <DIR>          GAC_64
2010/11/21  17:16    <DIR>          GAC_MSIL
2015/10/14  17:03    <DIR>          NativeImages_v2.0.50727_32
2015/10/14  17:03    <DIR>          NativeImages_v2.0.50727_64
2015/10/14  17:03    <DIR>          temp
2015/10/14  17:51    <DIR>          tmp
               0 個のファイル                   0 バイト
               7 個のディレクトリ  77,293,006,848 バイトの空き領域

とりあえず、用があるのは、GAC_32とGAC_64。
それぞれ、x86版とAMD64版が格納される。MSILは、多分、GAC_MSIL。見てないけど...

今回は、例えばOracleの64bit版のdllを欲してる場合とする。
> cd gac_64
> dir
    :
    :
2015/10/14  17:51    <DIR>          Oracle.DataAccess
2015/10/14  17:51    <DIR>          Oracle.DataAccess.resources
2015/10/14  17:51    <DIR>          Oracle.[[Database]].Extensions
2015/10/14  17:51    <DIR>          Oracle.Web
2015/10/14  17:51    <DIR>          Oracle.Web.resources
2015/10/14  17:51    <DIR>          Policy.2.102.Oracle.DataAccess
2015/10/14  17:51    <DIR>          Policy.2.111.Oracle.DataAccess
2015/10/14  17:51    <DIR>          Policy.2.111.Oracle.Web
    :
    :
が、該当するので...
※該当するヤツかどうかは、公開キートークンとかで絞り込めば分かると思う。

dir名をコピって来て、テキストエディタで編集。batを作ってやる。

こんな感じのtextを...
Oracle.DataAccess
Oracle.DataAccess.resources
Oracle.Database.Extensions
Oracle.Web
Oracle.Web.resources
Policy.2.102.Oracle.DataAccess
Policy.2.111.Oracle.DataAccess
Policy.2.111.Oracle.Web
正規表現使って置換する。
置換前 ^(.+)$
置換後 xcopy /i /e /y $1 c:\\wk\\tmp\\$1
※とりあえず、出力先は『c:\wk\tmp\』にしてみました。
xcopy /i /e /y Oracle.DataAccess c:\wk\tmp\Oracle.DataAccess
xcopy /i /e /y Oracle.DataAccess.resources c:\wk\tmp\Oracle.DataAccess.resources
xcopy /i /e /y Oracle.Database.Extensions c:\wk\tmp\Oracle.Database.Extensions
xcopy /i /e /y Oracle.Web c:\wk\tmp\Oracle.Web
xcopy /i /e /y Oracle.Web.resources c:\wk\tmp\Oracle.Web.resources
xcopy /i /e /y Policy.2.102.Oracle.DataAccess c:\wk\tmp\Policy.2.102.Oracle.DataAccess
xcopy /i /e /y Policy.2.111.Oracle.DataAccess c:\wk\tmp\Policy.2.111.Oracle.DataAccess
xcopy /i /e /y Policy.2.111.Oracle.Web c:\wk\tmp\Policy.2.111.Oracle.Web

で、コマンドプロンプトに貼り付けてやると...
こうなる。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (width=)

sub dir以下にDLLが格納されてるので、見てみると良い。


ただし、OracleのDLLは、GACから引っ張ってくるだけではダメ。
GACに登録されるdllはただのwrapperで、他のdllも必要になる事が原因。
取ってくるdllによって、他に何が必要かも考慮してやる必要があるので注意!



更新日: 2015年11月17日 (火) 15時30分11秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー