2

我已经编写了几十个自定义代码分析规则。这些规则是针对 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?

4

2 回答 2

0

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

于 2013-02-05T13:21:07.103 回答
0

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

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

于 2013-02-05T14:04:19.927 回答