Gra*_* H. 7 .net c# asp.net tfsbuild tfs2010
我一直在使用我们的TFS构建服务器遇到问题.我有2个项目(都在同一个解决方案中),1个是WebForms项目,运行.Net 4.0.第二个是运行.Net 4.5的ASP .Net MVC5项目.还有一个Silverlight项目,但只有前两个问题才能重现.
这两个项目都使用NuGet包用于各种库.有时,包中有不同的组件用于各自的环境..Net 4.0,4.5,SL组装等
构建服务器似乎将所需的所有库转储到单个文件夹中,然后从中提取构建解决方案.在许多情况下,这会导致问题,错误的项目会得到错误的程序集版本.这不会在本地发生,仅在构建服务器上发生.我无法弄清楚我需要做些什么来防止这种情况发生.有任何想法吗?
是的,我讨厌这种标准行为,但默认情况下,TFS 会将所有内容输出到同一个文件夹,然后,如果您具有相同名称的引用,甚至具有相同名称的项目输出,您将收到各种错误,具体取决于 msbuild 编译项目的顺序姓名。
最简单的解决方法是使用AsConfigured
“进程”选项卡上的选项“2. 构建定义窗口的“构建”->“输出位置”。这使您的正常源结构保持完整,但我认为您将失去对自动删除输出的支持(即您必须提供一个脚本来自己执行此操作)。如果您仅使用 TFS Build 进行验证,这是最干净的方法。
您还可以使用该PerProject
设置并将您的项目分成两个不同的解决方案,可能以平台为后缀(我们在我们公司已经做过很多次了)。然后,您为构建过程指定两个解决方案,它将在输出中创建两个单独的文件夹,每个解决方案一个。
这一切都假设您使用的是 TFS 2013。在 TFS2012 中,有一个类似的选项,但它位于“3”中。高级”->“解决方案特定的构建输出”。如果您使用 TFS2012,您可能必须走这条路线,否则您需要自己修改默认工作流程以添加您自己的逻辑。
编辑:
从您对另一张海报的评论中,我看到您正在使用 TFS 2010。嗯...我认为当时绝对不支持这一点,我记得有类似的问题,但我们升级到 TFS 2012,一切都很好。
我认为您唯一的选择是创建两个单独的构建定义并以这种方式构建每个解决方案,或者您需要检查 xaml 工作流程并使用您自己的逻辑对其进行编辑。也许下载 TFS2012 模板并将其“移植”到 TFS2010 会是更好的方法,因为至少您不会以这种方式重新发明轮子。
归档时间: |
|
查看次数: |
1393 次 |
最近记录: |