Tfs 一个构建定义赢得';t生成伪造程序集,另一个生成 介绍 我在我的机器上有Team Foundation Server Express 2013的问题。我在相同的控制器和代理上有两个构建定义,它们都运行在相同的服务器和相同的环境上

Tfs 一个构建定义赢得';t生成伪造程序集,另一个生成 介绍 我在我的机器上有Team Foundation Server Express 2013的问题。我在相同的控制器和代理上有两个构建定义,它们都运行在相同的服务器和相同的环境上,tfs,msbuild,microsoft-fakes,Tfs,Msbuild,Microsoft Fakes,应该注意的是,我已经毫无运气地看了“类似的问题”。这显然与相同的根本原因无关,症状也略有不同。 其中之一是门控签入构建定义,它在提交给开发分支时只编译所有内容 另一个是计划生成定义,它在每周六凌晨3点运行,生成自上次以来可能已提交给主分支的任何更改 门控构建定义有一个基于TfvcTemplate.12.xaml模板的流程(只对不运行测试和只编译代码进行了微小更改) 计划的生成定义过程基于某些Azure生成定义模板,这些模板可能来自较旧版本的Visual Studio,也可能基于某些Azure模板

应该注意的是,我已经毫无运气地看了“类似的问题”。这显然与相同的根本原因无关,症状也略有不同。

其中之一是门控签入构建定义,它在提交给开发分支时只编译所有内容

另一个是计划生成定义,它在每周六凌晨3点运行,生成自上次以来可能已提交给主分支的任何更改

门控构建定义有一个基于
TfvcTemplate.12.xaml
模板的流程(只对不运行测试和只编译代码进行了微小更改)

计划的生成定义过程基于某些Azure生成定义模板,这些模板可能来自较旧版本的Visual Studio,也可能基于某些Azure模板,或者可能基于
TfvcContinuousDeployment.12.xaml
模板

问题 我的封闭构建定义按预期运行,没有问题。它编译完整的解决方案,并且仅在编译成功时通过

但是,shceduled构建定义编译失败(甚至在它到达运行单元测试的点之前)。我看到的错误如下

显然,这是由于缺少假货组件。我尝试获取程序集并将它们检入(我宁愿避免),结果发现这个构建定义运行得很好,而不是之前运行得很好的门控定义

我想在编译之前在构建模板中运行
fakes.exe
,手动生成它们,但在我的初始测试中(为了看看这个理论是否可行),它甚至不会在命令行中运行,并输出一些我不理解的错误和警告(但可能与此无关,因为我可能正在使用不正确的参数运行
fakes.exe

更新 更新#1
应该注意的是,我的构建服务器上也安装了Visual Studio 2013 Ultimate安装了Update 3,服务器已完全更新。

我最终放弃了所有假货,改为实施Moq。效果更好,并迫使我放弃垫片或鼹鼠,这通常被认为是不好的做法。

计划的构建是否使用相同的用户和权限?是否正确管理“假货”,例如使用nuget,以便在所有配置中都可以访问?是否有干净的(新的)签出开箱即用的工作?门控定义不会显式还原NuGet包,但在编译它们之前,计划的定义会在项目上运行
NuGet restore
。但是NuGet与Fakes有什么关系?能否检查两个版本之间的工作区映射,以确保Fakes引用没有被带入from在工作版本中的其他地方。Nuget会将库放在..\packages\…中,在没有Nuget的情况下,引用可以指向一个构建用户可以访问的文件,但不能指向另一个。哦,问题是我没有检查二进制文件中是否有赝品。它们应该由构建服务器自动生成,对吗?它们确实是确实在门控签入时正确生成。