C# Progma指令学习

#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  
    }  
} 

 

posted @ 2020-10-14 11:08  三里路异乡客  阅读(336)  评论(0编辑  收藏  举报