CA2267:在檔案式程式指令值中引用空白

房產 價值
規則識別碼 CA2267
Title 在檔案式程式指令值中引用空白
類別 Usage
修正是破壞性或非破壞性 不中斷
預設啟用於 .NET 11 作為警告
適用語言 C#

原因

以檔案為基礎的程式 #: 指令值包含未加引號的空白字元。

規則描述

在支援加上引號之前,以檔案為基礎的程式中 #: 指令值內的空白字元都會按字面原樣處理。 那種形式仍然有效,但已經被淘汰了。 將包含空白字元的值用雙引號(")括起來,以避免剖析時產生歧義。

此規則適用於 #:sdk#:property#:package#:include#:project#:ref#: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

如需詳細資訊,請參閱 如何隱藏程式碼分析警告

參見