为啥添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败?
Posted
技术标签:
【中文标题】为啥添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败?【英文标题】:Why does TFS 2015 SP3 Build Agent fail when adding Microsoft.CodeAnalysis.NetAnalyzers?为什么添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败? 【发布时间】:2021-05-28 09:41:15 【问题描述】:再次遇到此问题,但之前的解决方案不适用(通过 Nuget 删除 Microsoft.Net.Compilers v3.8.0 - 此解决方案中不存在此包)...
我们有一个 VS2019 解决方案,我们刚刚通过 Nuget 用更新的 Microsoft.CodeAnalysis.NetAnalyzers (5.0.3) 替换了旧的 Microsoft FXCop 代码分析器 (3.3.x)。
我们在 TFS 2015 Update3 服务器上使用构建代理。该服务器具有 VS2019 和 Build Tools,均已更新至最新。和我们的开发机器上的一样。
使用旧的/已弃用的分析器构建的解决方案很好,但现在使用新的分析器会引发错误。错误是:
[ProjectPath]\src\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.3\build\Microsoft.CodeAnalysis.NetAnalyzers.props (1): The default XML namespace of the project must be the MSBuild XML namespace.
If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> element.
If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format.
我已经验证了解决方案中的所有项目,事实上,在 [project] 元素中都有推荐的命名空间。在进行一些实验和研究时,某些东西似乎覆盖了正常的 TFS 2015 编译器版本。我不知道它会是什么。
注意:我回到了 FXCop 代码分析器 2.9.12,一切都在 TFS 中构建得很好。当我尝试使用 3.3.x 时,我再次遇到相同的构建错误。不知道这意味着什么。
我们希望摆脱旧的/已弃用的分析器。非常感谢任何和所有帮助。
【问题讨论】:
你能在本地VS2019上成功构建解决方案吗? 是的。该解决方案在我的本地工作站上完美构建。无论我安装了什么代码分析器包,都没有问题。 TFS 在 FXCop Analyzers 2.9.x 之前构建良好,但仅此而已。 能否检查一下 tfs 管道中构建任务的构建日志,看看是否使用了 Visual Studio 2019 中的msbuild
that ?
感谢 Levi - 我如何提取特定失败构建的构建日志?我可以在本地计算机上的 Visual Studio 中看到它,但看不到它指示 MSBUILD 版本的位置。在我们的项目模板中,我们将其设置为动态配置:使用 VS2019 的 msbuild.exe 进行 tfs 构建。您可以尝试编辑您的构建模板 .xaml 以将 ToolPath
设置为 Visual Studio 2019 Pro 中 msbuild.exe 的位置。
ToolPath="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin"
或者,您可以编辑 TFSBuildServiceHost.exe.config 文件以使 MSBuild 任务使用特定的 MsBuild 位置。见下文:
<msbuildToolsets>
<toolset toolsVersion="16.0">
<property name="MSBuildToolsPath" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin" />
</toolset>
<toolset toolsVersion="latest">
<property name="MSBuildToolsPath" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin" />
</toolset>
</msbuildToolsets>
您可以参考以下主题以获取更多信息。
how to select which MSBUILD.exe is used
Build VS2017 project with TFS 2012 build server
【讨论】:
以上是关于为啥添加 Microsoft.CodeAnalysis.NetAnalyzers 时 TFS 2015 SP3 构建代理会失败?的主要内容,如果未能解决你的问题,请参考以下文章