升级到VS 2019之后,我试图通过禁用一些我不在乎的内容来使C++警告再次有用,例如C26812
我知道我可以转到每个项目的属性页,并将此字符串添加到“禁用特定警告”中,但这会重复很多(我有很多项目)。因此,我改为尝试更改所有项目共有的DisableSpecificWarnings变量:4996; 6031;%(DisableSpecificWarnings)
如何在Visual Studio 2019中以及在何处更改此全局变量?
最佳答案
项目默认值来自多个.props
文件,这些文件按范围,语言和平台进行组织。这些.props
文件的位置(甚至存在)在版本之间已更改,并且可能取决于VS 2019之前安装的过去版本的历史记录。
标识实际使用的默认.props
的一种(更安全的)方法是创建一个新的C++项目并查看生成的<Import Project ... />
文件中的.vcxproj
行。例如,我在机器上获得以下信息的顺序是递增的。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
最后一个应该是最具体的,它包含每个用户每个平台的设置。它似乎不再是通过全新的VS 2019安装创建的,但它是从以前的版本继承的,并且在存在时仍会被识别(例如,请参阅Microsoft.Cpp.Win32.user.props file missing)。
要查看
"$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
扩展到的内容,请打开项目设置并假装更改配置中的任何可编辑路径,然后在下拉菜单中单击Edit
,然后将.props
路径粘贴到编辑框中。实际路径将显示在其正下方,例如C:\Users\<user name>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
。在磁盘上找到文件,或者如果尚不存在则创建它,然后在
Project/ItemDefinitionGroup/ClCompile
下插入以下内容。 <DisableSpecificWarnings>26812;%(DisableSpecificWarnings)</DisableSpecificWarnings>
如果
.props
文件不存在,而您必须从头开始创建它,则完整文件为:<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<DisableSpecificWarnings>26812;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
</ItemDefinitionGroup>
</Project>
为了修改每台计算机的默认值,而不是每用户的默认值,请遵循相同的步骤,但改用
$(VCTargets)
文件之一。
关于c++ - 如何在Visual Studio 2019中更改%(DisableSpecificWarnings),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62210177/