Visual Studio хочет построить с неправильным набором инструментов платформы

я обновил решение с VS2010 до VS2012. Я сделал это с другими решениями, и это сработало отлично.

но теперь, когда я попытался создать обновленное решение, компилятор говорит мне:

Error 1596  error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools.    C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V110Microsoft.Cpp.Platform.targets   42  5   praat3

Я не знаю, почему компилятор пытается использовать VS2010.

на страницах свойств проекта я вижу в разделе "отладка исходных файлов"следующие записи:

C:Program Files (x86)Microsoft Visual Studio 10.0VCcrtsrc
C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfcsrcmfc
etc.

кроме того, если я установил "Platformtoolset" в " наследовать от проекта выше или проекта стандартный" по умолчанию "твердотельного накопителя V100, если". Я думаю, это лучший намек на то, что здесь происходит не так.

случайно мне удалось открыть Microsoft.СРР.Платформа.целевой файл, и я вижу, что v90 и v100 перечислены там, но не v110.

может ли кто-нибудь, кто использует только VS2012, возможно, взглянуть на этот файл?

вот как это выглядит для меня:

<!--
***********************************************************************************************
Microsoft.Cpp.Platform.targets

WARNING:  DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
          created a backup copy.  Incorrect changes to this file will make it
          impossible to load or build your projects from the command-line or the IDE.

This file defines the steps/targets required to build Visual C++ projects
specifically on x86 platforms.

Copyright (C) Microsoft Corporation. All rights reserved.
***********************************************************************************************
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ToolsetTargetsFound Condition="Exists('$(VCTargetsPath)Platforms$(Platform)PlatformToolsets$(PlatformToolset)Microsoft.Cpp.$(Platform).$(PlatformToolset).targets')">true</ToolsetTargetsFound>
    <VCTargetsPathEffective Condition="'$(ToolsetTargetsFound)' == 'true'">$(VCTargetsPath)</VCTargetsPathEffective>
  </PropertyGroup>

  <!-- Import Before -->
  <Import Condition="Exists('$(VCTargetsPath)Platforms$(Platform)ImportBefore')" Project="$(VCTargetsPath)Platforms$(Platform)ImportBefore*.targets"/>
  <!-- Import platform toolset file if found in this version -->
  <Import Condition="'$(ToolsetTargetsFound)' == 'true'" Project="$(VCTargetsPath)Platforms$(Platform)PlatformToolsets$(PlatformToolset)Microsoft.Cpp.$(Platform).$(PlatformToolset).targets" />
  <!-- Try to find the toolset in older versions  -->
  <Import Condition="'$(ToolsetTargetsFound)' != 'true' and '$(MinSupportedVCTargetsVersion)' != 'v110'" Project="Microsoft.Cpp.Platform.Redirect.targets" />

  <PropertyGroup>
    <PrepareForBuildDependsOn>PlatformPrepareForBuild;$(PrepareForBuildDependsOn)</PrepareForBuildDependsOn>
  </PropertyGroup>

  <Target Name="PlatformPrepareForBuild" DependsOnTargets="$(PlatformPrepareForBuildDependsOn)">
    <PropertyGroup>
      <ConfigurationPlatformExists Condition="'%(ProjectConfiguration.Identity)' == '$(Configuration)|$(Platform)'">true</ConfigurationPlatformExists>
    </PropertyGroup>

    <!-- Error out when building an platform that is not set in the project file -->
    <VCMessage Code="MSB8013" Type="Error" Arguments="$(Configuration)|$(Platform)" Condition="'$(DesignTimeBuild)'!='true' and '$(ConfigurationPlatformExists)' != 'true'"/>

    <!-- Check if toolset exists in Visual Studio 2010 or Dev11 -->
    <VCMessage Code="MSB8020" Type="Error" Arguments="$(_PlatformToolsetShortNameFor_v100);$(PlatformToolset)" Condition="'$(DesignTimeBuild)'!='true' and '$(ToolsetTargetsFound)' != 'true' and '$(PlatformToolset)' == 'v100'" />
    <VCMessage Code="MSB8020" Type="Error" Arguments="$(_PlatformToolsetShortNameFor_v90);$(PlatformToolset)" Condition="'$(DesignTimeBuild)'!='true' and '$(ToolsetTargetsFound)' != 'true' and '$(PlatformToolset)' == 'v90'" />
    <VCMessage Code="MSB8020" Type="Error" Arguments="$(PlatformToolset);$(PlatformToolset)" Condition="'$(DesignTimeBuild)'!='true' and '$(ToolsetTargetsFound)' != 'true' and '$(PlatformToolset)' != 'v90' and '$(PlatformToolset)' != 'v100'" />
  </Target>

  <!-- Import After -->
  <Import Condition="'$(ToolsetTargetsFound)' == 'true' and Exists('$(VCTargetsPath)Platforms$(Platform)ImportAfter')" Project="$(VCTargetsPath)Platforms$(Platform)ImportAfter*.targets"/>
</Project>

Спасибо за помощь.

4 ответов


проект настроен на сборку с помощью компиляторов VS2010 (набор инструментов платформы). Возможно, вы удалили VS2010 и получили эту ошибку.

вы можете изменить набор инструментов платформы в свойствах проекта->общие->набор инструментов платформы. Измените его Visual Studio 2012.


В разделе " C / C++ "был lib в"дополнительные каталоги include". Я не использовал этот lib, но на него ссылались. Я удалил этот Либ.

Я также удалил все записи "studio 2010" в реестре.


Я знаю, что это старая тема, но, возможно, это может помочь кому-то еще, кто приходит сюда из-за подобных проблем.

У меня была похожая проблема. VS 2015 Community (MSBuild 14) создание приложения на c++, хотел использовать инструменты VS 2010 (v100). Все это пришло вниз, давая msbuild недопустимый параметр конфигурации. Странный.

Итак, перепроверьте все эти параметры и параметры.


та же ошибка для меня недавно с VS2017.

оказалось, что решение просто отсутствует зависимый проект.
Если это причина, вы должны увидеть что-то вроде:

Done building project "someproject.vcxproj" -- FAILED.  

на следующей строке после сообщения об ошибке:

error MSB8020: The build tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found.

эта ошибка может быть запутанной, так как ваши проекты, возможно, уже были переназначены.