Visual studio 2008 在MSBuild中共享代码分析规则

Visual studio 2008 在MSBuild中共享代码分析规则,visual-studio-2008,msbuild,code-analysis,Visual Studio 2008,Msbuild,Code Analysis,我正在尽最大努力定义代码分析规则列表,当MSBuild执行我的TFSBuild.proj文件时,这些规则应该从代码分析工具中省略 但每次我测试它时,我要排除的代码分析规则列表都会被忽略,而TeamBuild只是简单地为每个项目执行代码分析规则设置 有没有人有一个TFSBuild.proj文件的示例,该文件为团队中生成的所有项目共享一个代码分析规则例外列表?我使用的是团队系统2008 谢谢你的帮助?嗯,我花了一段时间才找到这个,但这是我能找到的最好的答案 它是有效的,它确实让我可以在所有解决方案

我正在尽最大努力定义代码分析规则列表,当MSBuild执行我的TFSBuild.proj文件时,这些规则应该从代码分析工具中省略

但每次我测试它时,我要排除的代码分析规则列表都会被忽略,而TeamBuild只是简单地为每个项目执行代码分析规则设置

有没有人有一个TFSBuild.proj文件的示例,该文件为团队中生成的所有项目共享一个代码分析规则例外列表?我使用的是团队系统2008


谢谢你的帮助?

嗯,我花了一段时间才找到这个,但这是我能找到的最好的答案

它是有效的,它确实让我可以在所有解决方案中强制执行一组一致的规则,而不必访问每个项目的文件,这对我来说是巨大的,因为我们调整了规则集,不希望每次都手动更新每个项目


其他人知道任何有效的方法吗?-这是一个VS2005解决方案/解决方案,因此我希望在VS2008团队系统中更容易实现,但到目前为止还没有发现任何其他方法

我们通过代码分析签入策略来实现这一点。您可以通过团队系统对此进行配置。要实现,只需选择您的规则,然后右键单击解决方案->用签入策略替换代码分析设置。

我认为尝试用不同的设置覆盖csproj设置没有多大意义-无论何时何地构建代码,您肯定要使用相同的CA设置(或完全禁用CA)

正如foosnazzy所说,在MSBuild中(通常)不需要这样做。您可以使用CA签入策略设置要应用的规则。然后,在“解决方案资源管理器”中右键单击您的解决方案,在上下文菜单的一半左右,会出现一个子菜单,其中包含用于将TFSProjects的CA策略应用于解决方案中的所有项目的选项。您可以使用服务器的项目设置覆盖项目设置,也可以合并项目设置

它可能只复制当前配置的设置,因此如果要将相同的CA设置应用于调试和发布,则可能需要复制两次。(我模模糊糊地记得发生过这种情况,但我们并没有在发行版上运行CA,所以我最近没有尝试过)

(这在VSTS2005中可用,但不起作用-这些值与项目中的值“合并”,因此任何现有CA规则的严重性都会增加(到警告或错误),但您无法禁用CA规则(降级错误->警告->禁用)。此外,每次打开解决方案时,CA设置都会“漂移”因此,您必须每隔几天重新应用它们以保持其正常工作)


另一种方法是在单个项目中设置所需的CA规则,查找包含列表的XML元素,并使用文本编辑器(或几行C#代码)在项目中的所有csproj文件中对CA元素进行全局搜索和替换。在VSTS2008出现之前,我就是这样做的——一旦你使用了这种技术,只需几秒钟就可以通过所有CSproj迁移你的设置。这样做的好处是,您可以更加有选择性地选择CA规则应用于哪些项目。

@Jeffrey:这完全取决于您用于CA的产品,但我回答的最后一段中的原则可能适用于大多数/所有CA工具(如果可以找到设置的存储位置,通常可以手动复制设置)。