TFS 2017无法构建Fakes目标。

3
我有一个安装了VS 2017企业版的TFS 2017 Update 2本地服务器。我们的构建包含一个单元测试项目,其中包含一个Fakes程序集,在开发机器上可以正常工作。 当在TFS上构建时,构建失败并显示以下错误消息:
“名称空间'Our.Product'中不存在类型或命名空间名称为'Fakes'的内容(是否缺少程序集引用?)”
即缺少/无法生成Our.Product.Assembly.Fakes.dll文件。
我已按照此处建议进行了Fakes设置。
令我困惑的是,构建日志中没有提到Fakes(除了错误本身和MSBuild查找文件的路径之外),即使使用调试详细信息也是如此。它甚至不尝试生成Fakes程序集。
我需要采取其他步骤吗?我们使用vNext构建定义。
更新: 现在这是可以工作的构建步骤,在/tv:15.0 /p:VisualStudioVersion=15.0之前是不存在的。

enter image description here


你正在运行哪个构建,XAML 构建还是 vNext 构建? - PatrickLu-MSFT
伪装程序集不会随 VS2017 构建工具一起生成安装。 您可能需要查看此答案 https://dev59.com/e6Lia4cB1Zd3GeqPcQJk#44928697。 - zionyx
1
我们正在运行vNext。@zionyx 我知道那个答案,我甚至在问题中链接了它。 - Lennart
1个回答

3

更新

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


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

这将缩小问题与构建代理上的环境有关。确保它与本地开发机器相同。

如果程序集也生成,则该问题可能与您的构建定义设置相关。检查您是否使用了正确的msbuild版本。对于vNext构建,还要使用system.debug=true启用详细的调试模式。详细的调试模式


是的,在远程代理上手动在VS中构建它可以成功构建。正如所说,详细日志中没有提到Fakes生成的内容,除了缺少DLL的错误提示。 - Lennart
1
@Lennart,能否分享一下你的VS构建配置或者MsBuild任务,这样我就可以在我的环境中对其进行测试。请使用最新的msbuild参数,例如/tv:15.0 /p:VisualStudioVersion=15.0。另外,请创建一个具有相同设置的新的构建定义,并尝试重新构建项目。 - PatrickLu-MSFT
@Lennart,我成功地使用命令行构建了项目本身,无需特殊参数生成Fakes。这是我的日志 - zionyx
@Patrick-MSFT,msbuild参数起了作用,谢谢!如果您将它们添加到您的答案中,我会接受它。我在问题中发布了MSBuild任务。我假设它会自动使用MSBuild 15,因为它在过程中选择了正确的二进制文件。 - Lennart
@Lennart 谢谢,已经完成了。很高兴听到问题已经解决。根据您的描述,由于在远程代理上手动构建也可以构建,我猜测这个问题可能与您的 TFS 构建定义有关,建议您添加 /tv:15.0 /p:VisualStudioVersion=15.0,这将告诉 msbuild 强制使用 msbuild15 和 VS 2017。 - PatrickLu-MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接