1

当我在一个相当简单的项目上运行代码分析时,我立即得到“CA0503 问题运行代码分析”和“CA0505 问题运行代码分析”违规。 CA0503 文档页面说,“该属性已弃用。使用替代属性。” 但是,它没有指向替代属性、如何处理错误或如何抑制错误。显然,这是一个隐藏的 Microsoft 规则集,您不能只是关闭该规则。

CA0505 文档页面类似地指出,“已弃用的属性将被忽略,因为已定义取代的属性。” 它继续说,“当指定的已弃用和替代代码分析属性都包含项目或构建配置文件中的值时,会生成警告 CA505。要解决此问题,请删除已弃用的属性。”

在整个解决方案中搜索 CA0503 或 CA0505 的文本不会返回任何内容。但是,搜索“CodeAnalysisRules”会在我的两个项目文件中找到一行:

<CodeAnalysisRules>-Microsoft.Design#CA2210</CodeAnalysisRules>

通过类似的文本搜索未找到“CodeAnalysisRuleSet”的对应行。

有没有其他人遇到过这种情况,也许找到了纠正或抑制这些消息的方法?

4

3 回答 3

2

.ruleset我在将 Visual Studio 2008 项目升级到 Visual Studio 2013 时遇到了这个问题。在升级过程中,由于我称之为“特殊 TFS 源代码控制原因”而出现了一个关于无法添加文件的错误。

升级前,我的项目文件(在我的例子中是一个.csproj文件)包含一个<CodeAnalysisRules>元素。这包含一个与项目代码分析规则相关的巨大字符串。升级后,我的项目文件的CodeAnalysisRules元素没有改变,但是Migrated rules for [project name].ruleset在项目目录中创建了一个文件。

为了解决它,我:

  1. 将文件添加.ruleset到项目中(它可能已经为您添加,我的只是转储到项目目录中)。
  2. 卸载项目。
  3. .csproj通过完全删除<CodeAnalysisRules>元素并在其位置<CodeAnalysisRuleSet>Migrated rules for [project name].ruleset</CodeAnalysisRuleSet>或文件名中添加任何内容来更新.ruleset文件。
  4. 重新加载项目。

我假设在成功升级期间,Visual Studio 会解析旧元素的内容,基于它<CodeAnalysisRules>创建一个文件,并将其链接到项目。.ruleset我猜它并不总是有效。

于 2014-06-26T13:04:02.707 回答
1

如果您从以前的 Visual Studio 更新了解决方案,并且您已经定义了一个集中式规则文件。您需要手动将其从项目中删除。

于 2012-09-28T09:18:35.120 回答
0

在运行代码分析时,您的项目文件会自动更新。将添加一个条目 - CodeAnalysisRules。这就是发出此警告的原因。我认为,您需要以这样的方式进行配置,即元素 CodeAnalysisRules 不会出现在项目文件中。

于 2012-06-12T07:05:48.100 回答