Visual Studioを使用してアプリケーションをコンパイルするときに、アプリケーションアセンブリをGACに確実に自動インストールしたいと思います。Webアプリケーションのビルドでビルド前とビルド後のイベントを設定しました。
ビルド前のイベント:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /ul Uninstall.Gac.txt
ビルド後のイベント:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /il Install.Gac.txt
%windir%\system32\inetsrv\appcmd.exe recycle apppool -apppool.name:"Sharepoint IIS WebApps"
ご覧のとおり、新しいアセンブリが機能し始めるために、Webアプリケーションプールもリサイクルしています。
私が抱えている問題は、これが非常に信頼性の低いプロセスであるということです。Webアプリケーションが失敗した場合、アンインストールが失敗するため、次のビルドは失敗します(ビルド後は前のビルドで実行されませんでした)...など。
このプロセスを可能な限り信頼できるものにしたいと思います。アセンブリが存在する場合は条件付きでアンインストールし、存在するかどうかに関係なく強制的にインストールしたいと思います...しかし、次の理由から、ビルド前のイベントは依然として重要です。
重要
ビルドが行われる前にすべてのアセンブリが完全にアンインストールされることが重要です。そうしないと、出力ディレクトリにコピーされません(コンパイラがGACでアセンブリを検出するため)。したがって、GACのインストールは、出力\binフォルダにアセンブリが見つからないため失敗します。
WebアプリケーションビルドでGACのアンインストールとインストールを確実に行うにはどうすればよいですか?