使用MSBuild和VS2010生成的vcxproj文件作为目标 - 错误MSB4066("元素中的属性标签无法识别")

Eri*_*ric 13 msbuild visual-studio-2010

使用VS2010,我创建了一个名为"TfsBuildTestTarget"的Win32 C++控制台应用程序.这只是向导创建的默认控制台应用程序.我没有进行任何代码或项目更改,并且按预期在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>
Run Code Online (Sandbox Code Playgroud)

当我在这个项目文件上运行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:元素中的"Label"属性无法识别.

(VS生成的)vcxproj文件中的引用行如下所示:

  <ItemGroup Label="ProjectConfigurations">
Run Code Online (Sandbox Code Playgroud)

MSBuild项元素引用不包含Label属性.

这里发生了什么?为什么VS2010生成的项目文件似乎与MSBuild不兼容?有没有办法让我在没有手动调整XML的情况下将此解决方案构建为MSBuild项目的一部分?

Bri*_*ker 31

确保您使用的是.NET 4.0版本的MSBuild.

如果对包含vcxproj文件的VS2010解决方案使用.NET 3.5版本的MSBuild,则会出现此错误.

我制作了一个像你指定的c ++控制台应用程序,并使用.NET 3.5和.NET 4.0 MSBuild版本运行它.我使用3.5得到了错误,它使用4.0.

Label属性是.NET 4.0中的新增功能.它可以添加到ItemGroup,PropertyGroup,Target和其他元素中.msbuild的联机帮助中未提及label属性,但在msbuild 4.0模式文件中定义了该属性.