【问题标题】:How to run .NET 4 code analysis on build server如何在构建服务器上运行 .NET 4 代码分析
【发布时间】:2011-03-05 18:09:36
【问题描述】:

在带有 .NET 4 SDK 但没有 Visual Studio 2010 的 Windows Server 2003 R2 上,我尝试使用

构建 Visual Studio 2010 解决方案
msbuild MySolution.sln /p:RunCodeAnalysis=true

但是失败了。

在这样的环境中运行代码分析需要什么?


我收到此错误消息:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(129,9):错误 MSB6003: 无法运行指定的任务可执行文件“FxCopCmd.exe”。 无法加载文件或程序集 'Microsoft.VisualStudio.CodeAnalysis.Sdk,版本 = 10.0.0.0,文化 = 中性,PublicKeyToken = b03f5f7f11d50a3a' 或其依赖项之一。 系统找不到指定的文件。

我已经从 SDK 安装了 FxCop,但运气不好,将变量 FxCopDir 指向了 FxCopCmd.exe 的安装位置,并将此注册表项设置为该位置:

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Setup\EDev@FxCopDir

【问题讨论】:

  • 这适用于 C++ 项目,但不适用于 C# 项目

标签: .net-4.0 fxcop build-server


【解决方案1】:

我在我的 MSBuild 服务器上遇到了同样的问题,并通过以下方式修复了它:

  • 安装 Windows SDK 7.1
  • HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Setup\EDev 中设置注册表项 FxCopDirStanDir(在 Win32 中) .

然后我从开发 PC 复制到构建服务器上的 FxCop 文件夹,如下:

  • 文件夹Rule Sets(默认安装目标在这里:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\FxCop)
  • Microsoft.VisualStudio.CodeAnalysis.Sdk.dll
  • Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll
  • phx.dll

在安装了 Visual Studio 的开发 PC 上搜索它们以找到它们。

然后使用 .NET 4.0 版本的 gacutil.exeMicrosoft.VisualStudio.CodeAnalysis.Sdk.dll 安装到 GAC。

应该然后能够将代码分析作为 MSBuild 构建的一部分运行并使其正常工作。

【讨论】:

  • 谢谢!包括这些程序集和规则使它对我有用。
  • StanDir 应该设置什么值?
  • 如果它适用于 .NET 4.5 和在 VS 2012 中构建的项目,您能否分享分步说明?
【解决方案2】:

FxCop 的替代方法是使用 NDepend 工具,它可以编写Code Rules over C# LINQ Queries (namely CQLinq)免责声明:我是该工具的开发人员之一

默认建议超过200 code rules。得益于众所周知的 C# LINQ 语法,自定义现有规则或创建自己的规则非常简单。

可以在live in Visual Studio 和构建过程中验证规则,在generated HTML+javascript report 中。

【讨论】:

    【解决方案3】:

    另一个选项可能是调用 FxCop 可执行文件作为构建任务(来自 msbuildtasks),将结果保存为可在大多数 CI 工具(如 Hudson 和 CC.NET)中解析的 XML 文件

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多