我在其中一个生成的C#类中有以下pragma,它用于忽略CLSCompliant warning
#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:清洁;生成
结果:
" C:\ Users \ me \ Documents \ Visual Studio 2013 \项目\ 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)
你能帮忙理解为什么会这样吗?这是正常的吗?如何解决?
答案 0 :(得分:0)
我通过将#pragma warning disable 3021
添加到第一个cs文件(TestPragmaFile1.cs)来解决了这个问题。
您可能还想通过将[assembly:CLSCompliant(false)]
添加到程序集来尝试@JeroenMostert解决方案。