Version control 在您的编码/svn/开发工作流程中使用GACUtil是否被视为不好的做法?

Version control 在您的编码/svn/开发工作流程中使用GACUtil是否被视为不好的做法?,version-control,.net-4.0,gac,gacutil,Version Control,.net 4.0,Gac,Gacutil,在部署/发布场景中,有大量关于不使用GACUtil的信息/博客/msdn文章,MSI或其他windows installer技术是更好的选择 但是,在您的开发工作流程中使用GACUtil是否仍然合适 我们有许多DLL是从GAC强命名和引用的。为了使开发团队保持同步,一旦生成新版本的GAC-able DLL,它将自动添加到所有其他开发人员GAC中,作为其日常主干签出的一部分。工作流类似于: 开发人员对其中一个GAC-able程序集进行更改,在本地对其进行测试,并在签署后编译DLL的发布版本 发布

部署/发布场景中,有大量关于不使用GACUtil的信息/博客/msdn文章,MSI或其他windows installer技术是更好的选择

但是,在您的开发工作流程中使用GACUtil是否仍然合适

我们有许多DLL是从GAC强命名和引用的。为了使开发团队保持同步,一旦生成新版本的GAC-able DLL,它将自动添加到所有其他开发人员GAC中,作为其日常主干签出的一部分。工作流类似于:

  • 开发人员对其中一个GAC-able程序集进行更改,在本地对其进行测试,并在签署后编译DLL的发布版本
  • 发布版本从\Project\u DIR\bin\Release*.dll->\COMPANY\u GAC\Current*.dll复制
  • 其他开发人员运行我们的源代码管理签出批处理脚本,这些脚本:
    • 查看COMPANY\u GAC\Current*.dll的最新版本
    • 在每个DLL上运行GacUtil.exe
到目前为止,这对我们是有效的,但随着: -团队规模越大,GAC变更管理越严格。 -CLR2.0和CLR4.0编译的Company_Gac程序集需要不同版本的GACUtil.exe -管理具有多个功能分支的构建/集成服务器上的程序集(因此必须热交换不同的GAC DLL)

我们是否应该寻找一些比GACUtil和Scripts更强大的工具来管理它?

一个需要考虑的问题是,我们自己在powershell中滚动一些东西来检查程序集类型,并将程序集添加到正确的GAC中。有人这样做过吗


欢迎就开发人员如何管理其GAC工作流提出任何其他建议。

在部署期间不使用gacutil.exe是一个简单的问题:它在目标计算机上不可用,因为它是Windows SDK实用程序,并且不是可重新分发的组件

在开发过程中使用它当然不受欢迎。最典型的情况是,您将使用包含依赖项目的解决方案,这样您就可以通过本地部署自动获得最新版本,而无需GAC。在某种程度上,构建时间可能需要在解决方案过于庞大时开始分发宝剑

没有神奇的解决方案超过这一点,GAC当然有助于再次缩短构建时间。一般来说,基础组件中的搅动应该从负1000点开始,它们会引起很多痛苦。把它们保存起来,比如说,每周更新一次。一方面,还需要在客户端机器上正确安装所有这些东西。如果还没有人关注这一点,也许现在正是实现这一目标的好时机。当每个人都使用它来获取他们机器上所需的程序集时,它会自动进行调试