GACからDLLをエクスポートする

GACからDLLをエクスポートする

GACからDLLをエクスポートする必要があったため普通無い調べた.

GACって?

  • Global Assembly Cacheのこと.
  • マシンでグローバルにアセンブリを参照出来る.
  • 規定のパスは「%windir%\assembly」.

GACをのぞく

エクスプローラーで「C:\Windows\assembly」を開いてみる.

f:id:mt9116:20180628102651p:plain

通常の表示とは若干異なる. これは「アセンブリキャッシュビューア」によるものらしい.

f:id:mt9116:20180628102659p:plain

アセンブリキャッシュビューアが有効だとDLLがコピーできないみたい. これじゃ困るのでこれを無効にする.

アセンブリキャッシュビューアを無効にする

regedit.exeを管理者権限で起動する. 「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion」で右クリックし「新規」→「DWORD(32ビット)」をクリックする.

f:id:mt9116:20180628102708p:plain

名前を「DiableCacheViewer」とする. 「DisableCacheViewer」を右クリックし, 修正をクリックする.

f:id:mt9116:20180628102716p:plain

「値のデータ」を「1」とし, OKをクリックする.

f:id:mt9116:20180628102725p:plain

これでアセンブリキャッシュビューアが無効になる.

f:id:mt9116:20180628102733p:plain

エクスプローラーで「C:\Windows\assembly」を開いてみるとアセンブリキャッシュビューアが無効になったことが分かる.

f:id:mt9116:20180628102741p:plain

GUIでやるのがめんどくさい人はPowerShelでどうぞー

 New-ItemProperty -path "HKLM:\Software\Microsoft\Fusion" -name "DisableCacheViewer" -value 1 –PropertyType DWORD -Force

GACからDLLをエクスポートする

アセンブリキャッシュビューアを無効にすればあとは好きなだけDLLをコピーできる.

f:id:mt9116:20180628102749p:plain

Copy-Item -Path C:\Windows\assembly\GAC_32\ESRI.ArcGIS.ADF -Destination D:\Somewhere -Force -Recurse

裏話

ArcGIS 10.1から10.6にアップグレードした際にジオコーディングバッチが動かなくなった. ログを見るとDLLの参照がありません的なメッセージがあった. そこでバッチで参照しているDLLを見てみるとArcGIS Web ADFなるものを発見した. ArcGIS Web ADFについて調査すると...

次期バージョンの ArcGIS 10.2 がいよいよ来月末リリースする予定です。前回のバージョン 10.1 のリリースが 2012 年 10 月 1 日でしたのでちょうど 1 年の歳月を経てのバージョンアップとなります。 この ArcGIS 10.2 のリリースに伴い、ArcGIS 10.1 までサポートされていたいくつかのコンポーネントや環境などがサポート終了となります。 目立ったところでは、ArcGIS for Server に付属していた Web アプリケーション開発キットの Web ADF(Application Developer Framework)および ArcGIS Server Manager のウィザードを使って作成できる Web マッピング アプリケーションが提供されなくなります。これらについてはすでに JavaScriptFlex、そして Silverlight といった各種 Web API を提供しており、それらを使用することをお勧めしています。

そりゃあ10.6で提供されているわけないよなー ということで旧サーバーからDLLを取り出す必要があったためこの記事を書くに至った. バッチをビルドするときにDLLも含めておいてくれれば済んだ話なのに