CA2267:将基于文件的程序指令值中的空白字符用引号括起来

资产 价值
规则 ID CA2267
标题 将基于文件的程序指令值中的空白字符括在引号中
类别 用法
修复是破坏性还是非破坏性 Non-breaking
默认在 .NET 11 中启用 作为警告
适用的语言 C#

原因

基于文件的程序 #: 指令的值包含未标记的空格。

规则说明

在支持引号之前,基于文件的程序#: 指令值中的空白字符会按字面解释。 该形式仍可使用,但已弃用。 将包含空白字符的值用双引号(")括起来,以便无歧义地解析它们。

此规则适用于 #:sdk#:property、、#:package#:project#:ref#:include#:exclude指令。 仅当该值存在明确且保留原语义的带引号等效形式时,才会报告此问题,因此应用此修复绝不会改变该指令的含义。

有关基于文件的应用及其指令的详细信息,请参阅 基于文件的应用

如何修复违规行为

在语义值周围添加双引号,以便明确分析空格。 对于复合形式(例如属性赋值或包名称和版本),请将分隔符后面的部分用引号括起来。 将分隔符周围有意保留的所有空白字符放在引号之外。

在 Visual Studio 中,还可以应用 为指令值添加引号 代码修复。

Example

以下代码片段演示了违反 CA2267 规则的情况。

#:property Description=Hello World

以下代码片段修复了冲突。

#:property Description="Hello World"

代码修复将保留分隔符周围的空格,并在指令类型及其值之间保留空格。 例如,以下指令对齐名称和分隔符:

#:property Prop  = Value
#:package  First @ 1.0

此代码修补程序添加引号,而无需更改该对齐方式:

#:property Prop  = "Value"
#:package  First @ "1.0"

何时禁止显示警告

不建议禁止显示此警告。 带引号的形式是在指令值中包含空白字符的受支持方式,不带引号的形式则已被弃用。

禁止显示警告

对于基于文件的应用程序,可通过将 #:property 指令添加到入口点文件中来抑制单个违规。

#:property NoWarn=$(NoWarn);CA2267

若要禁用文件、文件夹或项目的规则,请在none中将其严重性设置为

[*.cs]
dotnet_diagnostic.CA2267.severity = none

有关详细信息,请参阅 如何禁止显示代码分析警告

另见