0

我在生成的 C# 类之一中有以下编译指示,它用于忽略CLSCompliant 警告

#pragma warning disable 3021

这在使用 msbuild 12 编译时非常有效。升级我的项目以使用 msbuild 14 后,再次启用此警告。

这似乎发生在部分课程中。这就是我重现的方式:

  1. 在 Visual Studio 2013 中创建空项目(ToolsVersion=12.0)

  2. 添加具有以下内容的新文件 TestPragmaFile1.cs:

    namespace TestPragma
    {
        public partial class TestPragma
        {
        }
    }
    
  3. 添加具有以下内容的新文件 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)

你能帮助理解为什么会发生这种情况吗?正常吗?如何解决?

4

1 回答 1

0

我通过添加#pragma warning disable 3021到第一个 cs 文件(TestPragmaFile1.cs)解决了这个问题。

您可能还想通过添加[assembly:CLSCompliant(false)]到程序集来尝试 @JeroenMostert 解决方案。

于 2017-07-21T16:45:36.150 回答