如何在解决方案中嵌入 StyleCop?

Ars*_*nko 5 msbuild stylecop visual-studio-2015

我尝试将 StyleCop 集成到 Visual Studio 解决方案中。我宁愿避免在每个开发人员的每台机器上安装 StyleCop。我多次看到的建议(示例)是在项目中包含 StyleCop 的二进制文件,将它们存储在版本控制中。

我就是这么做的。它在我的机器上工作,但在没有安装 StyleCop 的另一台机器上失败。在我的机器上卸载 StyleCop 后,它也无法在那里工作。

错误消息如下:

严重性代码描述项目文件行错误无法从程序集 C:\Program Files (x86)\MSBuild..\StyleCop 4.7\StyleCop.dll 加载“StyleCopTask”任务。无法加载文件或程序集“file:///C:\Program Files (x86)\StyleCop 4.7\StyleCop.dll”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。演示

这是我在每个 .csproj 文件中包含的内容:

<Import Project="$(SolutionDir)\externs\Microsoft.StyleCop\StyleCop.targets" />
Run Code Online (Sandbox Code Playgroud)

该目录C:\demo\externs\Microsoft.StyleCop包含:

  • 来自C:\Program Files (x86)\StyleCop 4.7,的所有文件的副本

  • 的副本C:\Program Files (x86)\MSBuild\StyleCop\v4.7\StyleCop.Targets

怎么了?

Ars*_*nko 4

似乎StyleCop.Targets包含绝对路径:

<UsingTask
    AssemblyFile="$(MSBuildExtensionsPath)\..\StyleCop 4.7\StyleCop.dll"
    TaskName="StyleCopTask"/>
Run Code Online (Sandbox Code Playgroud)

为了能够在未安装应用程序的计算机上使用 StyleCop,请将此路径更改为类似于以下内容的路径:

<UsingTask
    AssemblyFile="$(SolutionDir)\externs\Microsoft.StyleCop\StyleCop.dll"
    TaskName="StyleCopTask"/>
Run Code Online (Sandbox Code Playgroud)