Здравствуйте, у меня проблемы с ошибкой MSBuild. Первоначально он был обнаружен при попытке настроить автоматическую сборку через TFS, но был протестирован с локальной сборкой с использованием MSBuild.
Ошибка возникает при попытке построить проект VisualStudio 2013 через командную строку с использованием MSBuild. Проект прекрасно работает при открытии в VisualStudio. Это простой проект, созданный на основе Windows Embedded Compact 2013 SDK. Я знаю, что файлы .sln и .vcxproj действительны, так как они были созданы автоматически через VisualStudio. Кроме того, они прекрасно работают для всех конфигураций из VisualStudio.
Что-нибудь особенное, что нужно сделать, чтобы MSBuild мог использовать указанный мной SDK? Полный текст ошибки (слегка отредактированный для удаления названий проектов) выглядит следующим образом:
d:\TFS\Projects\MyProject>C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe MyProject.sln
Microsoft (R) Build Engine version 4.0.30319.18408
[Microsoft .NET Framework, version 4.0.30319.18444]
Copyright (C) Microsoft Corporation. All rights reserved.
Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
Build started 8/28/2014 3:55:14 PM.
Project "d:\TFS\Projects\MyProject\MyProject.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Am335xSDK".
Project "d:\TFS\Projects\MyProject\MyProject.sln" (1) is building "d:\TFS\Projects\MyProject\MyProject\MyProject.vcxproj" (2) on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.InvalidPlatform.Targets(23,7): error MSB8007: The Platform for project 'MyProject.vcxproj' is invalid. Platform='Am335xSDK'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Platform that doesn't exist for this project. [d:\TFS\Projects\MyProject\MyProject\MyProject.vcxproj]
Done Building Project "d:\TFS\Projects\MyProject\MyProject\MyProject.vcx
proj" (default targets) -- FAILED.
Done Building Project "d:\TFS\Projects\MyProject\MyProject.sln" (default targets) -- FAILED.Build FAILED.
"d:\TFS\Projects\MyProject\MyProject.sln" (default target) (1) ->
"d:\TFS\Projects\MyProject\MyProject\MyProject.vcxproj" (default target)
(2) ->
(InvalidPlatformError target) -> C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.InvalidP
latform.Targets(23,7): error MSB8007: The Platform for project 'MyProject.vcxproj' is invalid. Platform='Am335xSDK'. You may
be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Platform that doesn't exist for this project. [d:\TFS\Projects\MyProject\MyProject\MyProject.vcxproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.08
Я смог решить мою проблему сегодня. SDK, который я установил, был установлен вместе с набором инструментов V12 MSBuild. В вышеупомянутой ошибке я строил против более старой версии MSBuild, установленной с .net framework. Запустив сборку с правильным набором инструментов, она устранила проблему.
Это была похожая проблема для автоматизированной сборки инструментов, в которой я первоначально обнаружил проблему. В автоматизированном рабочем процессе сборки, который мы настроили для TFS, использовались параметры шаблона по умолчанию для TFS2012. Это было сделано против старой версии набора инструментов MSBuild. После руководства, расположенного здесь:
Создание решений Visual Studio 2013 с использованием ваших шаблонов сборки TFS 2010/2012
Мне удалось обновить наш рабочий процесс TFSBuild, чтобы выбрать правильный набор инструментов для сборок VisualStudio 2013.