我们有一个运行TFS2010的共享构建服务器。我们目前使用VS2008解决方案(很快计划升级到VS2010)。
我们的ASP.NET 3.5解决方案有一些外部dll,它们放在我们解决方案的“Library”文件夹中。问题是,如果我们从开发机器发布网站,则发布的文件夹是完美的。但是当TFS在构建服务器上构建它时,有3个外部dll永远不会被删除,我们必须在构建后手动复制它们。
我们尝试了一些方法,但它没有解决问题。我们还检查过像其他dll一样,这3个dll都有正确的刷新文件放在bin文件夹中。
一个问题可能是这些有问题的dll中的一些可能出现在开发机器的GAC上。如果确实存在问题,那么无论如何我们都无法在构建服务器上将dll放入GAC。
我们如何通过TFS强制将这3个dll强制放入bin文件夹?
答案 0 :(得分:6)
如果部署/复制包含对GAC中注册的自定义组件的引用的应用程序,则无论“复制本地”设置如何,都不会使用该应用程序部署/复制该组件。 See MSDN
您必须通过将私有元数据添加到GAC程序集引用来强制将local local复制到true。编辑项目文件并添加私有元数据:
<Reference ..>
<Private>True</Private>
</Reference ..>
<ProjectReference ..>
<Private>True</Private>
</ProjectReference ..>
现在应该从输出文件夹中复制/删除您的GAC程序集。
答案 1 :(得分:0)
您是否尝试从Visual Studio解决方案中的“References”文件夹中选择dll,然后从属性面板中将Copy Local设置为true?
答案 2 :(得分:0)
尝试检查构建日志并检查msbuild是否能够在构建时找到dll。您可以在排队构建时选择诊断日志记录,以获取更详细的日志。