在我的构建上启用静态代码分析时,我收到 MSBuild 引发的以下错误:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.CSharp.CurrentVersion.targets(134,9):警告 MSB3884:找不到规则集文件“AllRules.ruleset” . [C:\Program Files\VSTS Agent_work\PATH_TO_MY.csproj]
要让静态代码分析在构建代理(只有 MSBuild,没有 Visual Studio)上工作,对于旧版本的构建工具,我们应该:
- 复制
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets\
到构建服务器- 添加指向该文件夹的注册表项
(另请参阅此错误报告)
但是,这些说明不适用于"Build Tools for Visual Studio 2017"。我想知道如何解决这个问题,而不需要将规则集复制到我自己的存储库或更改我的 csproj 中的任何内容?
更新:
我尝试设置以下注册表项,但无济于事:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\15.0\Setup\EDev]
"StanDir"="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\Team Tools\\Static Analysis Tools"
通过注册表挖掘,我发现了以下注册表项。在我的机器上,我已经安装了 VS2017 Build Tools 和 Test Agent,这似乎指向后者,这是我在安装 Build Tools 后安装的:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7]
"15.0"="C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\TestAgent\\"
"14.0"="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\"
更新 2:
两个答案都提到了 file Microsoft.CodeAnalysis.Targets
。但是,我的构建服务器上不存在此文件。我尝试从我的 VS2017 安装中复制此文件夹:
from: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis
to: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis
但是,除了找不到规则集之外,它现在还会引发有关无法找到的错误Microsoft.WebApplication.targets
:
XXX.csproj(296,11):错误 MSB4226:导入的项目“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuil d\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.目标”没有找到。此外,尝试在 $(VSToo lsPath) 的后备搜索路径中找到 "WebApplications\Microsoft.WebApplication.targets" - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" 。这些搜索路径在“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe.Config”中定义。确认声明中的路径正确,并且该文件存在于磁盘上的搜索路径之一中。