У меня есть файл 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 конфигурации гурирование:
Мой первый вопрос, почему 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? Почему он берет «хорошую» конфигурацию и превращает ее в «плохую»?
1) Если открыть проект в VS2012 без модернизации он не показывается конфигурации ARM? 2) Было бы полезно посмотреть, как выглядит проект после обновления. Может быть, автоматический путь обновления от v110_wp80 до v120_wp81 или что-то другое не поддерживается/не работает или VS не работает хорошо с группой свойств условных глобальных переменных. Так как вы все равно повторяете более половины, вы можете попытаться использовать его безоговорочно и вместо этого переопределить только необходимые свойства, основанные на платформе. – stijn