我想可靠地自动安装我的应用程序在GAC组件,当我使用Visual Studio编译我的应用程序。我在我的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文件夹。

我应该怎么做可靠GAC卸载和安装在我的web应用程序的构建?

有帮助吗?

解决方案

在GACUTIL工具相反onrelying,不能你GAC程序安装/卸载?用代码,可以至少依靠HRESULTS错误代码并相应地作出反应。

在GAC API信息可以在这里找到:

http://blogs.msdn.com/ b /俊峰/存档/ 2004/09/14 / 229649.aspx

其他提示

如果生成成功时,输出组件复制到另一个目录和安装到GAC从那里。而在预编译使用此目录从GAC删除这些组件。

此方式存在不应该在编译期间在任何GAC组件。你可以调整生成后复制只有当所有的人都成功地通过批处理文件验证内置如果所有输出文件存在的二进制文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top