代码之家  ›  专栏  ›  技术社区  ›  Robert Koritnik

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

  •  5
  • Robert Koritnik  · 技术社区  · 14 年前

    在使用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安装失败,因为它在output\bin文件夹中找不到程序集。

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

    2 回复  |  直到 14 年前
        1
  •  2
  •   Simon Mourier    14 年前

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

    有关GAC API的信息可以在以下位置找到:

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

        2
  •  0
  •   Arunas    14 年前

    这样在编译期间,GAC中就不应该有任何程序集。如果所有输出文件都存在,则可以通过在批处理文件中验证来调整后期生成以复制所有二进制文件。

    推荐文章