Visual Studio 使用MSBuild Tools v120瞄准Windows 10 SDK

7eumitmz  于 2023-10-23  发布在  Windows
关注(0)|答案(1)|浏览(112)

我有一个Win32 C++项目,生成一个DLL。我使用Visual Studio 2022作为IDE。出于兼容性原因,我必须使用MSBuild Tools v120构建它。我无法使用MSBuild的较新版本。当尝试使用仅在Windows 10 SDK(10.0.22621.0)中可用的头文件时,我出现了问题。从这些配置中我了解到,Visual Studio使用的是Windows 8.1 SDK。

在我的项目配置中,当我切换到MSBuild Tools v143时,Visual Studio允许我选择要使用的Windows SDK。当我这样做时,VC++ Directories配置会发生变化,并以正确的SDK为目标。

但是,当我使用MSBuild Tools v120

时,没有这样的选项
我尝试像这样重定向解决方案

这是该进程

的输出
但我也有同样的问题:Visual Studio找不到我需要的头文件。当我查看与Visual Studio WindowsSDK相关的宏时,它们仍然指向Windows 8.1 SDK。
Visual Studio如何选择使用Windows 8.1 SDK?如何在Visual Studio 2022中使用MSBuild Tools v120定位Windows 10 SDK?

kxxlusnw

kxxlusnw1#

有些方面我不太清楚,比如:

  • MSBuild Tools 120 兼容性限制
  • 需要使用 Win 10 SDK

由于上述2个问题的结合(以及没有列出不起作用的具体事情(如[SO]: How to create a Minimal, Reproducible Example (reprex (mcve))中所述)-可能有其他解决方法),这可以被视为一个 *XY问题 *。
到目前为止,我发现没有官方资源说明这两个是不兼容的(但我们都知道,有时 MS 文档并不像它应该的那样清楚)。我找到了一些文章:

[MS.Learn]: Visual Studio 2013 Platform Targeting and CompatibilityWin 8.1 列为最新的目标桌面平台。
因此,如果不支持 Win 10,则没有理由使用 Win 10 特定的东西(Win 10 SDK)。
因此,不能将这两个合并(来自 VStudio 2022)结合起来可能是 MS 告诉你不应该这样做的方式。
另一方面,我能够在 Win 10 上运行一个用 VStudio 2013 构建的应用程序(不是一个 Hello World,而是一个复杂的应用程序,有一堆 .dll 和驱动程序)。

如何走得更远

1.将(整个项目)切换到更新的 VStudio 版本。毕竟,这是推荐的和正常的方式。我知道在某些情况下(特别是涉及大型项目)这是一个主要的负担,但在某些时候,这将不得不做无论如何。此外(根据[MS.DevBlogs]: Support reminder for older versions of Visual StudioVStudio 2013 将在大约6个月(2024/04/09)内停止(扩展)支持。当然,它仍然可以工作,但是一般来说,客户对在他们的环境中运行的代码(和相邻的工具)有点偏执
1.使用 VStudio 2013 IDE(最新更新)。您的设置很复杂(VStudio 2022VStudio 2013 ToolsWin 10 SDK),没有帮助。也许用简单一点的就不会那么复杂了
1.不要依赖 Win 10 SDK,但是无论你从那里使用什么(我必须再次指出答案中的第一段),都可以用 Win 8.1 SDK(或更早版本)的东西替换。
1.手动设置(包含和库)路径(仅适用于高级开发人员)。即使构建成功,也要注意在运行时可能会出现意想不到的结果。小心使用(因为它很可能是 * 不支持的配置 *)
不幸的是,现在我在 Nix 上(双)启动,我不能自己做任何测试(我安装了10多个工作的 VStudio 版本)。

相关问题