2016-10-15 2 views
0

У меня есть файл VCXPROJ из Visual Studio 2010. У файла была поддержка Win32 и x64 в течение многих лет, начиная с VC++ 5.0 дней. Мы пытаемся добавить к нему поддержку ARM.Проект ARM отсутствует после изменения VCUpgrade версий набора инструментов

Мы открыли файл под текстовым редактором и добавили следующие элементы. Сначала мы добавили ProjectConfiguration с Debug|ARM и Release|ARM.

<ItemGroup Label="ProjectConfigurations"> 
    <ProjectConfiguration Include="Debug|Win32"> 
    <Configuration>Debug</Configuration> 
    <Platform>Win32</Platform> 
    </ProjectConfiguration> 
    ... 
    <ProjectConfiguration Include="Debug|ARM"> 
    <Configuration>Debug</Configuration> 
    <Platform>ARM</Platform> 
    </ProjectConfiguration> 
    <ProjectConfiguration Include="Release|ARM"> 
    <Configuration>Release</Configuration> 
    <Platform>ARM</Platform> 
    </ProjectConfiguration> 
</ItemGroup> 

Во-вторых, мы добавили PropertyGroup для ARM и охранял Globals конфигурации:

<PropertyGroup Label="Globals" Condition="'$(Platform)'=='Win32' Or '$(Platform)'=='x64'"> 
    <ProjectGuid>{c39f4b46-6e89-4074-902e-ca57073044d2}</ProjectGuid> 
    <RootNamespace>cryptlib</RootNamespace> 
    <PlatformToolset>v100</PlatformToolset> 
    <ConfigurationType>StaticLibrary</ConfigurationType> 
</PropertyGroup> 

<PropertyGroup Label="Globals" Condition="'$(Platform)'=='ARM'"> 
    <ProjectGuid>{c39f4b46-6e89-4074-902e-ca57073044d2}</ProjectGuid> 
    <RootNamespace>cryptlib</RootNamespace> 
    <PlatformToolset>v110_wp80</PlatformToolset> 
    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> 
    <ConfigurationType>StaticLibrary</ConfigurationType> 
</PropertyGroup> 

Когда мы открываем проект под Visual Studio 2012 или 2013 году, мы видим, что наборы инструментов проекта изменены после обновления/перепланирование:

Upgrading project 'cryptlib'... 
    Configuration 'DLL-Import Debug|x64': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'DLL-Import Debug|Win32': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'DLL-Import Release|x64': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'DLL-Import Release|Win32': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'Debug|Win32': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'Debug|ARM': changing Platform Toolset to 'v120' (was 'v110_wp80'). 
    Configuration 'Debug|x64': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'Release|Win32': changing Platform Toolset to 'v120' (was 'v100'). 
    Configuration 'Release|ARM': changing Platform Toolset to 'v120' (was 'v110_wp80'). 
    Configuration 'Release|x64': changing Platform Toolset to 'v120' (was 'v100'). 
Retargeting End: 1 completed, 0 failed, 0 skipped 

Однако Configuration Manager отсутствует в ARM конфигурации гурирование:

enter image description here

Мой первый вопрос, почему Configuration Manager отсутствует конфигурации ARM? Что нам нужно сделать Configuration Manager делает выбор доступным?


Продолжая эксперимент в поддержку ARM ... Когда я падаю в визуальной Developer Prompt студии ARM, а затем попытаться построить его после обновления/переориентацией:

C:\Users\Test>msbuild /t:build /p:Configuration=Debug;Platform=ARM cryptlib.vcxp 
roj 
Microsoft (R) Build Engine version 12.0.21005.1 
[Microsoft .NET Framework, version 4.0.30319.42000] 
Copyright (C) Microsoft Corporation. All rights reserved. 

Build started 10/15/2016 7:52:13 PM. 
Project "C:\Users\Test\cryptlib.vcxproj" on node 1 (build target(s)). 
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms\ARM\PlatformToo 
lsets\v120\Toolset.targets(36,5): error MSB8022: Compiling Desktop applications 
for the ARM platform is not supported. [C:\Users\Test\cryptlib.vcxproj] 
Done Building Project "C:\Users\Test\cryptlib.vcxproj" (build target(s)) -- FAIL 
ED. 

Build FAILED. 

"C:\Users\Test\cryptlib.vcxproj" (build target) (1) 
-> 
    (_WindowsSDKDesktopARMSupportInstalled target) -> 
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms\ARM\PlatformT 
oolsets\v120\Toolset.targets(36,5): error MSB8022: Compiling Desktop application 
s for the ARM platform is not supported. [C:\Users\Test\cryptlib.vcxproj] 

    0 Warning(s) 
    1 Error(s) 

Что не очевидно в том, Visual Studio изменила набор инструментов платформы с v110_wp8, и она работала. Когда Visual Studio изменила его на v120, он больше не работал.

Мой второй вопрос: что происходит с Visual Studio? Почему он берет «хорошую» конфигурацию и превращает ее в «плохую»?

+0

1) Если открыть проект в VS2012 без модернизации он не показывается конфигурации ARM? 2) Было бы полезно посмотреть, как выглядит проект после обновления. Может быть, автоматический путь обновления от v110_wp80 до v120_wp81 или что-то другое не поддерживается/не работает или VS не работает хорошо с группой свойств условных глобальных переменных. Так как вы все равно повторяете более половины, вы можете попытаться использовать его безоговорочно и вместо этого переопределить только необходимые свойства, основанные на платформе. – stijn

ответ

1

Мой первый вопрос, почему Configuration Manager отсутствует ARM конфигурации

? Что нам нужно сделать, чтобы Configuration Manager сделал выбор доступным?

Мы могли бы использовать Configuration Manager для добавления платформы рук (Configuration Manager-> из списка активных решений платформы -> Добавить -> выберите Arm-> OK).

Мой второй вопрос: что происходит с Visual Studio? Почему он принимает «хорошую» конфигурацию и превращает ее в «плохую»?

создать демо-версию и воспроизвести проблему на моей стороне, мне кажется, что vs2012 (то же самое с vs2013 и vs2015), не поддерживает платформу руки по умолчанию, вы можете отредактировать файл, чтобы открыть функцию (нужны права администратора):

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props 

В разделе <PropertyGroup> добавьте строку:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport> 

перед тем </PropertyGroup>

С наилучшими пожеланиями,

Коул Ву

Смежные вопросы