如何在 VS2017 中禁用“警告 MSB8051:不支持针对 Windows XP 的支持”?

Posted

技术标签:

【中文标题】如何在 VS2017 中禁用“警告 MSB8051:不支持针对 Windows XP 的支持”?【英文标题】:How to disable "warning MSB8051: Support for targeting Windows XP is deprecated" in VS2017? 【发布时间】:2018-12-18 21:38:25 【问题描述】:

由于 Visual Studio 2017 的最新更新之一,我在构建 MFC 项目期间开始收到以下警告:

1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\v141_xp\Toolset.targets(39,5): 警告 MSB8051:不推荐使用针对 Windows XP 的支持,并且 将不会出现在 Visual Studio 的未来版本中。请参见 https://go.microsoft.com/fwlink/?linkid=2023588 了解更多信息。

如何禁用此警告?

这是项目配置:

【问题讨论】:

搜索“抑制 msbuild 警告”。 @zett42:我只能找到is this,但这个答案并不完整。我不明白他是怎么跳出"Common Properties"->"User Macros" 【参考方案1】:

将此添加到您的 .vcxproj 文件中,或者添加到现有的 PropertyGroup 或它自己的一个中。

<PropertyGroup>
    <XPDeprecationWarning>false</XPDeprecationWarning>
</PropertyGroup>

或通过命令行

msbuild [project file] /p:XPDeprecationWarning=false

另一种可能性是转到您的“属性管理器”窗口并将“添加新属性表...”添加到您的项目中。右键单击新工作表并选择“通用属性”->“用户宏”->“添加宏”并使用名称 XPDeprecationWarning 和值 false。遗憾的是,您不能只在您的项目上执行此操作,因为 Visual Studio 不允许您使用 GUI 来编辑根项目文件上的 UserMacros(我一直想知道为什么文件中存在节点)。

这些都应该做完全相同的事情,所以如果一个不适合你,那么我不确定为什么其他任何一个会更成功。

【讨论】:

谢谢,我添加了它as such,但它对那个警告没有影响。 @c00000fd 这在文件中可能为时过早。项目文件包括几个常见的属性表 (*.props),它们可能会覆盖设置。试着把它放在这些包括之后。 @zett42:我做的第一件事,我把它放在最后,也没有得到任何东西。或者,我应该将它嵌套在ItemGroup 标签内吗? 我刚刚添加到我的项目顶部,正如您在 png 中显示的那样,它似乎按预期工作。如果您跳转到有问题的目标文件,您可以看到有问题的行。 仅当 XPDeprecationWarning 属性不为“假”时才应报告您的属性。它需要包含在带有标签 UserMacros 的 PropertyGroup 中的早期字节应该没问题。我有点难过为什么这可能不适合你...... %LocalAppData%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.user.props中输入这个,为你的所有项目去掉它。【参考方案2】:

对于那些使用单独的属性表(在视图 --> 其他窗口 --> 属性管理器中找到)将多个项目的属性组合到一个文件中的人,我的文件是 AllCommon.props,我能够添加替换 null &lt;PropertyGroup /&gt;

 <PropertyGroup>
   <XPDeprecationWarning>false</XPDeprecationWarning>
 </PropertyGroup>

所以整个属性文件现在看起来像:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <XPDeprecationWarning>false</XPDeprecationWarning>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <AdditionalIncludeDirectories>..\MyCommonLibrary</AdditionalIncludeDirectories>
      <CallingConvention>StdCall</CallingConvention>
      <TreatWarningAsError>true</TreatWarningAsError>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

这行得通,奇怪的是我不必对用户宏做任何事情。该文件必须手动编辑,因为我还没有找到使用 GUI 进行编辑的方法。

【讨论】:

以上是关于如何在 VS2017 中禁用“警告 MSB8051:不支持针对 Windows XP 的支持”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS Code 中禁用装订线指示器?

VS2017无法调试

使用 VS 2015 构建 QtWebEngine 5.8 时如何禁用 Windows 10 功能?

VS2017安装认证失败

如何在 ASP.NET Core(.NET 6、VS 2022)中禁用浏览器链接

VSCode 如何禁用某些格式的代码错误检查(红色波浪线)?