| 资产 | 价值 |
|---|---|
| 规则 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
有关详细信息,请参阅 如何禁止显示代码分析警告。