ToolsVersion в Visual Studio 2019 - PullRequest
       42

ToolsVersion в Visual Studio 2019

0 голосов
/ 14 апреля 2020

Я делаю миграцию нескольких проектов с VS2010 на VS2019. У этих проектов есть Версия инструментов 4 в их vcxpro js:

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

Target 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>

1 Ответ

1 голос
/ 15 апреля 2020

Файл проекта содержит ToolsVersion = "16,5". Этот набор инструментов может быть неизвестен или отсутствует

Для решения этой проблемы необходимо выполнить некоторые обновления.

Предложение

1 ) , щелкните правой кнопкой мыши по проекту в VS2019 IDE -> Retarget Projects и нацелите этот проект на Windows 10 SDK version и выберите upgrade to v142.

2) , Щелкните правой кнопкой мыши свой проект в VS2019 IDE -> выгрузить проект -> Изменить (имя проекта) .vcxproj -> измените ToolsVersion="4.0" на ToolsVersion="Current" -> и перезагрузите проект

3) Щелкните правой кнопкой мыши свой проект -> Свойства -> Свойства конфигурации -> Общие -> измените Platform Toolset на Visual Studio 2019 v142.

----- ----------- Обновление 1 -----------

Прежде всего, ToolVersion относится к версии MSBuild, которая включена в редакции Visual Studio вроде. И вообще, мы не используем 16.5 в VS2019. Смотрите эту ссылку . И на самом деле, в VS2019 ToolVersion установлен на Current.

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

Вы не можете включить указанный c маленький номер версии.

Это мой результат теста с вашим образцом на моей стороне, и кажется, что это похоже на предупреждение:

enter image description here

Это означает, что он не может указать недопустимую версию инструмента 16.5.

Решение

1) Как я уже говорил, измените версию инструмента на Current in Realproject.vcxproj.

2) удалить узел toolversion xml в Realproject.vcxproj и в VS2019 он автоматически распознает версию инструмента без добавления его вручную.

Чтобы доказать это, вы можете создать новый Проект VS2019 c ++, и я уверен, что вы не можете найти узел версии инструмента в файле xxxx.vcxproj.

Затем попробуйте мое решение для каждого проекта, и я уверен, что когда вы завершите его sh, информация больше не появится .

...