2017年TFS没有';不要制造假目标

2017年TFS没有';不要制造假目标,tfs,tfsbuild,microsoft-fakes,Tfs,Tfsbuild,Microsoft Fakes,我在prem服务器上安装了TFS 2017更新2,并安装了VS 2017 Enterprise。我们的构建包含一个单元测试项目,该项目包含一个伪造程序集,并在dev机器上本地工作。 在TFS上生成时,生成失败,原因是 命名空间中不存在类型或命名空间名称“Fakes” “我们的.Product”(是否缺少装配参考?) (即未生成/未能生成Our.Product.Assembly.Fakes.dll文件) 我还按照建议设置了假货 让我感到困惑的是,构建日志中没有提到伪造的内容(错误本身和MSBuil

我在prem服务器上安装了TFS 2017更新2,并安装了VS 2017 Enterprise。我们的构建包含一个单元测试项目,该项目包含一个伪造程序集,并在dev机器上本地工作。 在TFS上生成时,生成失败,原因是

命名空间中不存在类型或命名空间名称“Fakes” “我们的.Product”(是否缺少装配参考?)

(即未生成/未能生成
Our.Product.Assembly.Fakes.dll
文件)

我还按照建议设置了假货

让我感到困惑的是,构建日志中没有提到伪造的内容(错误本身和MSBuild查找文件的路径除外),即使是在调试冗长的情况下。他不会试图生成伪造程序集

我还需要采取其他步骤吗?我们使用vNext构建定义

更新: 这是在
/tv:15.0/p:VisualStudioVersion=15.0
不存在之前,现在可以使用的构建步骤


更新

对msbuild参数使用最新版本,例如
/tv:15.0/p:VisualStudioVersion=15.0
,可以解决此问题


首先尝试将生成服务帐户RDP用于远程生成代理,并手动运行生成,以查看是否生成了程序集

如果它与构建代理上的环境相关,则会缩小范围。确保它与本地开发人员机器相同


如果还生成了程序集,则问题可能与生成定义设置有关。检查您使用的msbuild版本是否正确。对于vNext构建,也可以使用
system.debug=true

运行XAML构建还是vNext构建?安装VS2017构建工具时不会生成伪造程序集。您可能想在运行vNext时查看这个答案@zionyx我知道这个答案,我甚至在问题中链接了它。是的,如果我在远程代理的VS中手动构建它,它就会构建。如前所述,详细日志中没有提到生成伪代码的内容,除了缺少DLL的错误。@Lennart您能否共享VS build或MsBuild任务的配置,以便我可以对其进行测试。对msbuild参数使用最新版本,例如
/tv:15.0/p:VisualStudioVersion=15.0
。还要使用相同的设置创建一个新的生成定义,并尝试再次生成该项目。@Lennart,我设法使用命令行本身进行生成。没有生成假货的特殊参数。这是我的。@Patrick MSFT msbuild参数使它工作了,谢谢!如果你把它们加到你的答案中,我会接受的。我在问题中发布了MSBuild任务。我假设它会自动使用MSBuild 15,因为它在这个过程中选择了正确的二进制文件。@Lennart谢谢,我已经完成了。很高兴在这里解决了这个问题。根据您的描述,因为如果您在远程代理的VS中手动构建它,它也会生成。我猜这个问题可能与您的tfs生成定义有关,因此建议您添加
/tv:15.0/p:VisualStudioVersion=15.0
,这将告诉msbuild强制使用msbuild15和VS 2017。