3

我们正在从 VS2008 迁移到 VS2010 和 TFS。

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

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

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

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

这些 DLL 将在生产中的 GAC 中,3 个网站都使用它们,所以我们不希望它们在 BIN 文件夹中。

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

什么是让它在 VS2010 和 TFS 中工作的正确方法?

4

2 回答 2

1

将 DLL 安装到 GAC 中对于版本管理和部署来说真的很痛苦。尝试创建一个“Lib”文件夹来保存所有第三方 DLL。我们在工作中这样做并且工作正常。这也不会是 XCopy 部署的问题。有关更多详细信息,请参阅TFS 和引用的 DLL的帮助。

于 2012-12-07T18:44:42.130 回答
0

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

那么你有两个选择:

  1. 为您的 GACTUtil 设置管理员权限以使您成功。
  2. 将引用应该在 GAC 中的 DLL 的 Visual Studio 项目更改到您将在调试/测试配置中部署它们的特定位置(例如,第三方 DLL 的 ThirdParties 文件夹,以及您自己的 DLL 的另一个文件夹),将 GAC 参考保留在版本中。

有些人会告诉你 1. 很糟糕,因为你不应该为帐户授予管理员级别,因为这很糟糕。

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

我的建议是 1. 因为: - 这很容易 - 你不会破坏你当前的架构 - 服务的管理员级别不会有那么糟糕的风险,真的......

于 2012-06-28T15:40:08.843 回答