如何使用TFS和Build Agent正确引用将在GAC中的dll

时间:2012-06-28 13:25:59

标签: visual-studio-2010 tfs gac

我们正在从VS2008转向VS2010和TFS。

目前我们有一个解决方案,其中有十几个项目内置到DLL中,然后放入GAC以及此解决方案中的3个网站项目,这些项目构建使用这些放入GAC的DLL。 / p>

在VS2008中,我们有使用gacutil注册它们的后期构建事件,这一切都在本地开发人员机器上运行良好,但它不适用于TFS和Build代理。我不得不删除这个帖子构建事件。

现在的问题是网站无法构建,因为DLL不在代理正在构建的构建机器上的GAC中。

我尝试从网站上引用VS2010中的项目,但是这样就可以从web.configs中删除程序集引用,然后在构建/发布时将dll复制到bin文件夹,这不是我们想要的。

这些DLL将在生产中的GAC中使用,并且3个网站都使用它们,因此我们不希望它们出现在BIN文件夹中。

我们还有第三方DLL,它们也将在GAC中用于所有3个网站。

在VS2010和TFS中使用它的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

将DLL安装到GAC中可能是版本管理和部署的真正难题。尝试创建一个“Lib”文件夹以保留所有第三方DLL。我们在工作中这样做并且工作正常。这也不是XCopy部署的问题。 有关详细信息,请参阅help with TFS and referenced DLLs

答案 1 :(得分:0)

要将DLL注册到GAC,您需要管理员级权限,默认情况下不是Team Build Service帐户。这就是它失败的原因。

您有两个选择:

  1. 将管理员权限设置为构建帐户,以使GACTUtil成功。
  2. 在调试/中将您应该在GAC中引用DLL的Visual Studio项目更改为您将部署它们的特定位置(例如,第三方DLL的ThirdParties文件夹,以及您自己的DLL的另一个文件夹)测试配置,保持GAC参考发布。
  3. 有些人会告诉你1.很糟糕,因为你不应该给帐户管理级别,因为它很糟糕。

    有些人会告诉你2.糟透了,因为事情变得复杂,而且你不会按实际发货的方式测试事物。

    我的建议是1.因为:   - 这很容易做到   - 您不会破坏当前的架构   - 管理层对服务的风险不会那么大,真的......