Используя VS2010, я создал консольное приложение Win32 С++ под названием "TfsBuildTestTarget". Это просто консольное приложение по умолчанию, созданное мастером. Я не делал изменений кода или проекта, и он строит ОК в VS2010, как и ожидалось.
Затем я создал файл проекта MSBUILD следующим образом:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild Projects="TfsBuildTestTarget.sln" Targets="TfsBuildTestTarget" Properties="Configuration=Release;Platform=Win32"/>
</Target>
</Project>
Когда я запускаю MSBUILD в этом файле проекта, я получаю следующую ошибку:
"C:\DEV\TfsBuildTestTarget\testBuild.proj" (цель по умолчанию) (1) → "C:\DEV\TfsBuildTestTarget\TfsBuildTestTarget.sln" (Целевой объект TfsBuildTe stTarget) (2) → (Цель TfsBuildTestTarget) →
C:\DEV\TfsBuildTestTarget\TfsBuildTestTarget\TfsBuildTestTarget.vcxproj(3,14): ошибка MSB4066: атрибут "Ярлык" в элементе непризнан.
Линия, на которую ссылается, в файле (vsxproj), создаваемом VS (VS-сгенерированный) выглядит следующим образом:
<ItemGroup Label="ProjectConfigurations">
Ссылка для элемента элемента MSBuild не включает атрибут Label.
Что здесь происходит? Почему VS2010 генерирует файлы проекта, которые не совместимы с MSBuild? Есть ли способ создать это решение в рамках проекта MSBuild без ручной настройки XML?