将自定义代码分析规则迁移到VS2012

时间:2012-12-04 00:28:10

标签: code-analysis fxcop tfs2012 cci

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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