msbuild C# 14 编译器不会忽略警告 3021
msbuild C# 14 compiler doesn't ignore warning 3021
我在生成的 C# class 之一中有以下 pragma,它用于忽略 CLSCompliant warning
#pragma warning disable 3021
这在使用 msbuild 12 编译时完美运行。将我的项目升级为使用 msbuild 14 后,再次启用此警告。
这似乎发生在部分 class 上。这是我重现的方式:
在 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.Compile 在项目目录(包含csproj文件的目录)中执行此命令:
"C:\Program Files (x86)\MSBuild.0\Bin\msbuild" /T:Clean;Build
结果:
"C:\Users\me\Documents\Visual Studio
2013\Projects\TestPragma\TestPragma\TestPragma.csproj" (Clean;Build
target) (1) -> (CoreCompile target) -> TestPragmaFile1.cs(5,26):
warning CS3021: 'TestPragma' does not need a CLSCompliant attribute
because the assembly does not have a CLSCompliant attribute
[C:\Users\me\Documents\Visual Studio
2013\Projects\TestPragma\TestPragma\TestPrag ma.csproj]
1 Warning(s)
0 Error(s)
你能帮忙理解为什么会这样吗?正常吗?如何解决?
我通过将 #pragma warning disable 3021
添加到第一个 cs 文件 (TestPragmaFile1.cs) 解决了这个问题。
您可能还想通过将 [assembly:CLSCompliant(false)]
添加到程序集来尝试@JeroenMostert 解决方案。
我在生成的 C# class 之一中有以下 pragma,它用于忽略 CLSCompliant warning
#pragma warning disable 3021
这在使用 msbuild 12 编译时完美运行。将我的项目升级为使用 msbuild 14 后,再次启用此警告。
这似乎发生在部分 class 上。这是我重现的方式:
在 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.Compile 在项目目录(包含csproj文件的目录)中执行此命令:
"C:\Program Files (x86)\MSBuild.0\Bin\msbuild" /T:Clean;Build
结果:
"C:\Users\me\Documents\Visual Studio 2013\Projects\TestPragma\TestPragma\TestPragma.csproj" (Clean;Build target) (1) -> (CoreCompile target) -> TestPragmaFile1.cs(5,26): warning CS3021: 'TestPragma' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute [C:\Users\me\Documents\Visual Studio 2013\Projects\TestPragma\TestPragma\TestPrag ma.csproj]
1 Warning(s) 0 Error(s)
你能帮忙理解为什么会这样吗?正常吗?如何解决?
我通过将 #pragma warning disable 3021
添加到第一个 cs 文件 (TestPragmaFile1.cs) 解决了这个问题。
您可能还想通过将 [assembly:CLSCompliant(false)]
添加到程序集来尝试@JeroenMostert 解决方案。