Visual Studio 2019 中的工具版本

2024-04-11

我正在做几个项目从VS2010到VS2019的迁移。这些项目的 vcxprojs 中有工具版本 4:

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

目标VS是VS2019 v16.5.0,MSBuild版本是16.5.0.12403,所以我尝试将ToolsVersion设置为16.5:

<Project DefaultTargets="Build" ToolsVersion="16.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

但 MSBuild 似乎不喜欢它:

1>Building with tools version "Current".
1>Project file contains ToolsVersion="16.5". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="Current".

尽管构建无论如何都是成功的,但我关心这个消息。这里可能出了什么问题?

UPD:
提供项目结构的简化示例:
常用道具:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
        <ShouldUnsetParentConfigurationAndPlatform>false</ShouldUnsetParentConfigurationAndPlatform>
</PropertyGroup>
<PropertyGroup Label="Globals">
        <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
        <DotNetFrameworkVersion>v4.0</DotNetFrameworkVersion>
</PropertyGroup>
<!-- Other common variables-->
</Project>

cpp 道具:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup Label="Configuration">
        <ConfigurationType>DynamicLibrary</ConfigurationType>
    </PropertyGroup>

    <PropertyGroup>
        <TargetExt>.dll</TargetExt>
    </PropertyGroup>

   <PropertyGroup Label="Configuration">
        <PlatformToolset>v142</PlatformToolset>
    </PropertyGroup>

    <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" />
    <Import Project="common.props" />

    <-- compiler, linker settings and so on -->
</Project>

真实项目:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="16.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup Label="Globals">
    <ProjectName>my_name</ProjectName>
    <ProjectGuid>{my_guid}</ProjectGuid>
    <RootNamespace>my_ns</RootNamespace>
    <Keyword>my_keyword</Keyword>
  </PropertyGroup>
  <Import Project="cpp.props" />
  <-- configurations (Release, Debug, x64/Win32 and so on -->
  <-- project-specific compiler/linker settings -->
  <-- items: cpp, heanders and so on -->
  <-- references -->
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

项目文件包含 ToolsVersion="16.5"。该工具集可能未知 或失踪

要解决此问题,您应该进行一些更新。

建议

1),在VS2019 IDE上右键单击项目-->Retarget Projects并将该项目的目标定位为Windows 10 SDK version并选择upgrade to v142.

2),在VS2019 IDE上右键单击您的项目-->卸载项目-->编辑(项目名称).vcxproj-->更改ToolsVersion="4.0" to ToolsVersion="Current"--> 然后重新加载你的项目

3)右键单击您的项目-->属性-->配置属性-->常规-->更改Platform Toolset to Visual Studio 2019 v142.

----------------更新1----------

首先,ToolVersion与 Visual Studio 版本中包含的 MSBuild 版本相关。一般来说,我们不使用16.5在VS2019中。看这个链接 https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-toolset-toolsversion?view=vs-2019。实际上,在 VS2019 中,ToolVersion 设置为Current.

VS2019-->Current, VS2017-->15.0,VS2015-->14.0

您不能包含特定的小版本号。

这是我的测试结果,你的样本在我身边,看起来就像一个警告:

这意味着它不能指定非法工具版本16.5.

Solution

1)正如我之前所说,将 toolversion 更改为Current in Realproject.vcxproj.

2)删除toolversionxml 节点在Realproject.vcxproj而在VS2019中,它会自动识别工具版本,无需手动添加。

为了证明这一点,你可以创建一个新的 VS2019 c++ 项目,我确信你找不到 toolversion 节点xxxx.vcxproj file.

然后在每个项目中尝试我的解决方案,我确信当您完成它时,该信息将不会再次出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 2019 中的工具版本 的相关文章

  • 为 Visual Studio 应用程序设置平台目标的目的是什么?

    对于任何 VS 项目 都可以在该项目的构建属性中设置平台目标 您可以将其设置为任何 CPU x86 x64 或 Itanium 我的问题是 如果我将此值设置为 x86 是否意味着我无法在 x64 计算机上运行该项目 如果是这样 为什么还要使
  • 在生产 Web 服务器上安装 Visual Studio 的原因

    有人将 Visual Studio 安装在 Web 服务器上 其唯一目的是为传入请求提供服务 是否有正当理由 说真的 有人可能这样做有什么特殊原因吗 一种可能的用途是连接到 Web 服务器并调试某种错误或内存泄漏 这些错误或内存泄漏已被证明
  • MSBuild:OutputPath 目录为空

    我想部署我的 ASP NET MVC 站点并具有以下脚本
  • 如何在 VB.NET 中单击按钮切换表单语言?

    我想创建本地化应用程序并想要实现语言切换器 例如特殊按钮 我使用 Visual Studio 2010 Express VB NET 我创建了带有一个标签和一个按钮的简单测试应用程序 我将表单的属性 Localized 设置为 True 并
  • 如何使用 InstallShield 限量版创建单个 setup.exe?

    我正在尝试创建一个 exe 文件安装程序 我设法将所有依赖项放入 exe 文件中 通过设置从 Setup exe 属性中提取 如何在 setup exe 文件中获取 msi 这就是现在的样子 我也有这个烦恼 在我看来 它的做法非常不直观 突
  • 如何调试(最好在 IDE 中)MSBuild 脚本?

    我们非常广泛地使用 MSBuild 作为我们持续集成过程的一部分 虽然它非常强大 我们几乎可以在其中完成所有构建 测试和部署 利用一些自定义任务 我们发现使用标签对其进行调试是一种痛苦 并且不能总是为我们提供足够的信息 我发现 http w
  • 如何使用 Visual Studio 2010 创建 Web 服务负载测试?

    有没有办法像测试网站一样使用 VS2010 测试 Web 服务 对于网站 我可以创建一组 WebTestRequest 对象来模拟测试中网页的加载和解析 然后 实现 GetRequestEnumerator 我可以为负载测试生成结果 以便任
  • Visual Studio 2010 基类扩展编译器错误

    我有一个 C 类 提供一些简单的类和一些基类扩展 例如这个 public static Boolean ToBooleanOrDefault this String s Boolean Default return ToBooleanOrD
  • 在 Visual Studio 中将域名从 localhost 更改为自定义名称

    我是 MVC 新手 我刚刚在 VS 2010 中创建了一个 MVC4 测试项目 它运行正常 但 url 是http 本地主机 60826 http localhost 60826 我想把它改成http my test site http m
  • TFS 构建失败,文件“无法复制文件”,甚至不在项目中

    我已经设置了 TFS Build 直到昨天为止都运行良好 从那时起 我从一个项目中收到以下错误 C Program Files x86 MSBuild Microsoft VisualStudio v11 0 WebApplications
  • 对 C# 解决方案进行逆向工程

    我知道 Visual Studio 2010 Ultimate 有一些功能 我通常会凭本能这样做 但我的日程安排非常紧张 我还安装了 Visio 2010 并将其集成到 VS 中 但它的逆向工程功能似乎没有多大作用 并且必须在每个项目的基础
  • Visual Studio退出调试,没有任何异常或错误

    我有一个TCP CLIENT游戏服务器项目在视觉工作室2010 当我在调试模式下启动项目时 需要一段时间 有时 1 天 有时 1 周 视觉工作室退出调试 没有任何异常或错误 我检查了窗口和应用程序日志 没有什么意外的 如何找出真正的问题是什
  • 如何检查 lib 文件?

    我有一个包含 390 个库的列表 需要将软件从实验室 CVI 移植到 Visual C 这些依赖关系快要了我的命 我无法导入所有这些 这太过分了 而且并非所有它们都是唯一的和 或根本可以加载 有没有一种简单的方法可以确定 lib 文件进行哪
  • Microsoft Edge WebView2 - 加载时示例崩溃

    我采用了最新版本的 Microsoft Web WebView2 0 9 515 预发布 并将其添加到测试 C WinForms 应用程序中 我使用VS 2019 NET框架是4 7 2 将WebView2控件放置在窗体上 编译并运行 应用
  • 在 Visual Studio 2010 中标准化行结尾

    我们有多个开发人员在开发一个应用程序 似乎每当一个特定的人在处理一个文件时 其他人在处理该文件时 他们都会得到 以下文件中的行结尾不一致 你想要 标准化行结尾 Visual Studio 中是否有一些选项可供开发人员更改 这样我们就不会一直
  • 在 VS 包项目中获取 dte2 或 TeamFoundationServerExt 对象?

    我正在开发一个 Visual Studio Package 项目 该项目需要连接到我们的 TFS 要读取当前连接 我需要 TeamFoundationServerExt 对象 我应该能够从 dte2 对象中获取该对象 现在我找到了数百个示例
  • vscode 窗口没有响应[重复]

    这个问题在这里已经有答案了 VS代码版本 1 77 0 操作系统版本 windows 11 22h2 这是我过去几天收到的问题 我使用了nodejs 并且没有安装任何Python或其他软件 我已经删除了所有扩展并删除了缓存 在此输入图像描述
  • 如何在构建后事件中获取版本号

    我想使用构建后事件自动创建 nuget 包 然后将其复制到我们网络上的共享文件夹 如下所示 版本号 1 0 0 0 在 MyLib nuspec 文件中指定 nuget exe pack SolutionDir MyLib nuspec x
  • 找不到“C:\Microsoft.Cpp.Default.props”

    我在 Visual Studio 2013 中创建了一个项目 项目文件具有以下属性 工具版本 12 0 平台工具集 v120 我安装了 Visual Studio 2013 和 Microsoft Build Tools 2015 该项目使
  • C++11 / VS2010:返回不可复制但可移动对象的容器

    考虑以下代码 include

随机推荐