использование MSBuild с файлом vcxproj, созданным VS2010, в качестве цели - ошибка MSB4066 («Метка атрибута в элементе не распознана») - PullRequest
13 голосов
/ 24 февраля 2011

Используя VS2010, я создал консольное приложение Win32 C ++ под названием «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 target) (2) -> (TfsBuildTestTarget target) ->
C: \ DEV \ TfsBuildTestTarget \ TfsBuildTestTarget \ TfsBuildTestTarget.vcxproj (3,14): ошибка MSB4066: атрибут «Метка» в элементе не распознан.

Ссылочная строка в (сгенерированном VS) файле vcxproj выглядит следующим образом:

  <ItemGroup Label="ProjectConfigurations">

Ссылка для элемента элемента MSBuild не включает атрибут Label.

Что здесь происходит? Почему VS2010 генерирует файлы проекта, которые не совместимы с MSBuild? Есть ли способ для меня построить это решение как часть проекта MSBuild без ручной настройки XML?

Ответы [ 2 ]

31 голосов
/ 24 февраля 2011

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

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

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

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

1 голос
/ 15 апреля 2011

Я использовал пункт «Открыть командную строку Visual Studio (2008)» для меню «Пуск», и он выдал ту же ошибку, но когда я переключился на «Открыть командную строку Visual Studio (2010)», у меня былопроблема чудесным образом решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...