C# 预处理器指令:#pragma

#pragma 为编译器提供特殊的指令,以说明如何编译包含杂注的文件。这些指令必须是编译器支持的指令。也就是说,不能使用 #pragma 创建自定义预处理指令。Microsoft C# 编译器支持以下两个 #pragma 指令:

#pragma warning(C# 参考)

#pragma checksum(C# 参考)

#pragma pragma-name pragma-arguments
本在线速查手册由www.w♥3♥x♥u♥e.com提供,请勿盗用!

参数

pragma-name

可识别杂注的名称。

pragma-arguments

特定于杂注的参数。

 

#pragma warning

#pragma warning 可启用或禁用某些警告。

#pragma warning disable warning-list
#pragma warning restore warning-list
本在线速查手册由www.w♥3♥x♥u♥e.com提供,请勿盗用!

参数

warning-list

警告编号的逗号分隔列表。只输入数字,不包括前缀 "CS"。

当没有指定警告编号时,disable 禁用所有警告,而 restore 启用所有警告。

示例

// pragma_warning.cs
using System;

#pragma warning disable 414, 3021
[CLSCompliant(false)]
public class C
{
    int i = 1;
    static void Main()
    {
    }
}
#pragma warning restore 3021
[CLSCompliant(false)]  // CS3021
public class D
{
    int i = 1;
    public static void F()
    {
    }
}
本在线速查手册由www.w♥3♥x♥u♥e.com提供,请勿盗用!

#pragma checksum

生成源文件的校验和,以帮助调试 ASP.NET 页。

#pragma checksum "filename" "{guid}" "checksum bytes"
本在线速查手册由www.w♥3♥x♥u♥e.com提供,请勿盗用!

参数

"filename"

要求监视更改或更新的文件的名称。

"{guid}"

文件的全局唯一标识符 (GUID)。

"checksum_bytes"

十六进制数的字符串,表示校验和的字节。必须是偶数位的十六进制数。奇数位的十六进制数字会导致编译时警告,然后指令被忽略。

备注

Visual Studio 调试器使用校验和来确保找到的总是正确的源。编译器计算源文件的校验和,然后将输出发出到程序数据库 (PDB) 文件。最后,调试器使用 PDB 来比较它为源文件计算的校验和。

此解决方案不适用于 ASP.NET 项目,因为算出的校验和是生成的源文件的校验和,而不是 .aspx 文件的校验和。为解决此问题,#pragma checksum 为 ASP.NET 页提供了校验和支持。

在 Visual C# 中创建 ASP.NET 项目时,生成的源文件包含 .aspx 文件(从该文件生成源文件)的校验和。然后,编译器将此信息写入 PDB 文件。

如果编译器在该文件中没有遇到 #pragma checksum 指令,它将计算校验和,然后将算出的值写入 PDB 文件。

示例

class TestClass
{
    static int Main()
    {
        #pragma checksum "file.cs" "{3673e4ca-6098-4ec1-890f-8fceb2a794a2}" "{012345678AB}" // New checksum
    }
}
本在线速查手册由www.w♥3♥x♥u♥e.com提供,请勿盗用!