Подтвердить что ты не робот

Используя MSBuild с VSc001 -генерированным файлом vcxproj в качестве целевого - ошибка MSB4066 (атрибут "Ярлык в элементе непризнан" )

Используя 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?

4b9b3361

Ответ 1

Убедитесь, что вы используете версию MSBuild.NET 4.0.

Если вы используете версию MSBuild.NET 3.5 для решения VS2010, содержащего файл vcxproj, вы получите эту ошибку.

Я создал консольное приложение С++, как вы указали, и запустило его, используя версии .NET 3.5 и .NET 4.0 MSBuild. Я получил ошибку, используя 3.5, и работал с 4.0.

Атрибут Label является новым в .NET 4.0. Его можно добавить в ItemGroup, PropertyGroup, Target и другие элементы. Атрибут метки не упоминается в онлайн-справке для msbuild, но он определен в файлах схемы it.mbbuild 4.0.

Ответ 2

Я использовал команду "Open Visual Studio Command Prompt (2008)" в меню "Пуск" для сборки, и это дало мне ту же ошибку, но когда я переключился на "Open Visual Studio Command Prompt (2010)", проблема чудесно решена.