TFS构建程序集版本冲突

时间:2014-10-07 08:42:59

标签: c# .net tfs msbuild .net-assembly

我有一个构建定义,其中包含使用不同版本.NET的项目。有些使用 4.0 ,有些则使用 4.5

  • Project for 4.0使用EntityFramework 4.4。
  • 4.5的项目使用EntityFramework 5.0。

这给我带来了很多麻烦,因为虽然编译没问题,但测试不会在构建服务器中传递,因为EntityFramework程序集不正确。

似乎每个项目都会在输出文件夹中覆盖现有的程序集及其所需的程序集,因此运行正确的程序集来运行测试是幸运的。

我该如何避免这个问题?我可以强制输出文件夹保留最新版本的EF并放置程序集吗?

感谢。

编辑:我根据答案检查了构建定义,发现了这个:

编辑2 :快照对应于从以前版本的TFS迁移的模板,因此它看起来不像默认模板。无论如何,我突出显示的选项对我有用:)我已将问题标记为已回答。

Build Definition

1 个答案:

答案 0 :(得分:2)

您基本上有3种选择,具体取决于您在构建时所构建的内容。

选项1 将输出位置设置为 PerProject AsConfigured ,这将允许将每个应用程序删除到它自己的文件夹,然后测试应该独立于目标运行EF框架。 如果您要在每个项目的基础上部署单独的应用程序,这是很好的。 Build Definition Set Output Location

选项2 保留所有内容并更改构建顺序,以便最后构建最新版本的EF,因此将最新版本保留在drop文件夹中,然后可以根据需要添加重定向

选项3 标准化EF版本并更新所有项目以指向单个版本。