我在生成的 C# 类之一中有以下编译指示,它用于忽略CLSCompliant 警告
#pragma warning disable 3021
这在使用 msbuild 12 编译时非常有效。升级我的项目以使用 msbuild 14 后,再次启用此警告。
这似乎发生在部分课程中。这就是我重现的方式:
在 Visual Studio 2013 中创建空项目(ToolsVersion=12.0)
添加具有以下内容的新文件 TestPragmaFile1.cs:
namespace TestPragma { public partial class TestPragma { } }
添加具有以下内容的新文件 TestPragmaFile2.cs:
namespace TestPragma { #pragma warning disable 3021 [System.CLSCompliant(false)] public partial class TestPragma { } }
4.在项目目录(包含csproj文件的目录)执行此命令进行编译:
"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild" /T:Clean;Build
结果:
“C:\Users\me\Documents\Visual Studio 2013\Projects\TestPragma\TestPragma\TestPragma.csproj”(清理;构建目标)(1)->(CoreCompile 目标)-> TestPragmaFile1.cs(5,26): 警告 CS3021:“TestPragma”不需要 CLSCompliant 属性 ,因为程序集没有 CLSCompliant 属性 [C:\Users\me\Documents\Visual Studio 2013\Projects\TestPragma\TestPragma\TestPrag ma.csproj]
1 Warning(s) 0 Error(s)
你能帮助理解为什么会发生这种情况吗?正常吗?如何解决?