#pargma 为编译器给出特殊指令以编译它所在的文件。这些指令必须受编译器支持。即是说,不可使用#pragma创建自定义处理指令。Microsoft C# 编译器支持一下两种#pragma指令:
#pragma warning
#pragma checksum
语法
#pragma pragma-name pragma-arguments
参数:
pragma-name:已识别杂注的的名称
pragma-arguments: 特定于杂注的参数
#pragma warning 可以启用或禁用特定警告
语法: #pragma warning disable warning-list
#pragma warning restore warning-list
参数:warning-list 以逗号分隔的警告编号列表。“CS”前缀是可选的。未指定警告编号时,disable会禁用所有警告,restore会启动所有警告。
备注:若要在Visual Studio中查找警告编号,请生成项目,然后在输出窗口(Outlook Window)中查找警告编号。
#pragma checksum 生成原文件的校验和以帮助调试ASP.NET页面
语法:#pragma checksum "filename" "{guid}" "checksum bytes"
参数:"filename"需要监视更改或更新文件的名称。
"{guid}" 哈希算法的全局唯一标识符(GUID)
"checksum_bytes" 表示校验和(checksum)字节的十六进制数字的字符串。必须是偶数个十六进制数字。奇数个十六进制数字会导致编译时警告出现,且指令遭忽略。
备注: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" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "ab007f1d23d9" // New checksum } }