每个构建的GAC安装 - 如何可靠地进行

Rob*_*nik 5 gacutil visual-studio-2010 global-assembly-cache build-events

我想在使用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
Run Code Online (Sandbox Code Playgroud)

发布后事件:

"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"
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我还在回收我的Web应用程序池,以便新程序集开始工作.

我遇到的问题是这是一个非常不可靠的过程.如果我的Web应用程序失败,我的下一个版本将失败,因为卸载将失败(后期构建未在以前的版本上运行)...等等.

我想尽可能让这个过程变得可靠.我想条件卸载和组装,如果它们存在并强行安装,无论它们是否存在......但是预构建事件对于下一个原因仍然很重要:

重要

在构建之前完全卸载所有程序集是很重要的,否则它们不会被复制到我的输出目录(因为编译器在GAC中找到它们),因此GAC安装失败,因为它无法在output\bin文件夹中找到程序集.

我应该如何在我的Web应用程序构建中可靠地执行GAC卸载和安装?

Sim*_*ier 2

您不能仅依靠 GACUTIL 工具来编写 GAC 安装/卸载程序吗?使用代码,您至少可以依赖 hresults 错误代码并做出相应的反应。

有关 GAC API 的信息可在此处找到:

http://blogs.msdn.com/b/junfeng/archive/2004/09/14/229649.aspx