CA2266:基于文件的程序入口点应以 开头 #!

财产 价值
规则 ID CA2266
标题 基于文件的程序入口点应以 开头 #!
Category 用法
修复是破坏性还是非破坏性 Non-breaking
在 .NET 10 中默认启用 作为警告
适用的语言 C#

原因

多文件基于程序的入口点文件不会以 shebang (#!) 行开头。

规则说明

为确保工具能够正确识别,并支持直接由 shell 执行,请在入口点文件开头添加 shebang(#!)行,以便将其与通过 #:include#:ref 引入的文件明确区分开来。

如何修复违规行为

在入口点文件开头添加 shebang 行,例如,#!/usr/bin/env dotnet

Example

以下代码片段显示了 CA2266 冲突。

app.cs中:

#:include "helpers.cs"

Console.WriteLine(GetMessage());

helpers.cs中:

string GetMessage() => "Hello";

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

app.cs中:

#!/usr/bin/env dotnet
#:include "helpers.cs"

Console.WriteLine(GetMessage());

helpers.cs中:

string GetMessage() => "Hello";

何时禁止显示警告

如果你有意省略 shebang 行,并已确认你的工具仍能正确识别入口点,则可以安全抑制此警告。

禁止显示警告

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

#:property NoWarn=$(NoWarn);CA2266

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

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

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

另见

基于文件的应用