【问题标题】:Migrating custom Code Analysis rules to VS2012将自定义代码分析规则迁移到 VS2012
【发布时间】:2012-12-04 00:28:10
【问题描述】:

我已经编写了几十个自定义代码分析规则。这些规则是针对 Visual Studio 2010 开发的。根据需要,程序集引用了 FxCopSdk、Microsoft.Cci 和 Microsoft.VisualStudio.CodeAnalysis 的 10.0 版。它们在 Visual Studio 2010 中正确运行并在 TFS 2010 中正确构建。

我想迁移到 Visual Studio 2012。但是,当我使用 VS 2012 在现有解决方案上运行自定义规则时,出现 CA0062 错误。根本原因是加载自定义规则程序集时出现 CA0053 错误。我知道这些对三个程序集的引用需要更新到 Visual Studio 2012 的版本 11。这可以使用配置文件中的版本重定向来完成。我可以通过重定向 Visual Studio 2012 IDE 和 FxCopCmd 二进制文件来使其在本地工作,但是在将代码检入 TFS 2010 时遇到了麻烦。

我们已经考虑了两种明显的解决方案,但都不是很可口。第一种是要求每个开发者在本地进行重定向,然后修改 TFS 构建代理也进行重定向。二是维护自定义代码分析规则的两个分支,一个针对版本 10(VS2010),另一个针对版本 11(VS2012)。

有没有更好的方法来做到这一点,还是我们需要同时升级到 TFS 2012 和 Visual Studio 2012?

【问题讨论】:

  • 我认为这是你的三个选择:(

标签: code-analysis fxcop cci


【解决方案1】:

您可以尝试手动编辑项目文件并编写两个包含块(一个用于VS2010,一个用于VS2012),然后定义条件以使用正确的一个。您只需要在 msbuild 中确定是要为 VS2010 还是 VS2012 构建。

【讨论】:

    【解决方案2】:

    在您的方法和 ZFE 提出的方法之间,您几乎拥有所有潜在的候选人。鉴于这些选择,我强烈建议使用分支,因为没有具有向后兼容性保证的 FxCop 官方 SDK。

    如果幸运的话,您不会遇到任何影响规则的行为或 API 表面更改,并且两个分支之间的唯一区别是引用,因此任何合并都将是微不足道的。但是,如果您以后需要分支,您现在在替代方法上所做的任何时间投资都将丢失,并且最终需要分支的可能性是不可忽略的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2012-11-14
      • 2013-12-12
      相关资源
      最近更新 更多