【问题标题】:using MSBuild with VS2010-generated vcxproj file as target -- error MSB4066 ("attribute Label in element is unrecognized")使用 MSBuild 和 VS2010 生成的 vcxproj 文件作为目标 - 错误 MSB4066(“元素中的属性标签无法识别”)
【发布时间】:2011-02-24 16:48:43
【问题描述】:

使用 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>

当我在这个项目文件上运行 MSBUILD 时,我收到以下错误:

"c:\dev\TfsBuildTestTarget\testBuild.proj" (默认目标)(1)-> “c:\dev\TfsBuildTestTarget\TfsBuildTestTarget.sln” (TfsBuildTest stTarget 目标) (2) -> (TfsBuildTestTarget 目标)->
c:\dev\TfsBuildTestTarget\TfsBuildTestTarget\TfsBuildTestTarget.vcxproj(3,14): 错误 MSB4066:元素中的属性“标签”无法识别。

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

  <ItemGroup Label="ProjectConfigurations">

reference for the MSBuild item element 不包含标签属性。

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

【问题讨论】:

    标签: visual-studio-2010 msbuild


    【解决方案1】:

    确保您使用的是 .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 架构文件中定义。

    【讨论】:

      【解决方案2】:

      我使用“开始”菜单的“打开 Visual Studio 命令提示符 (2008)”条目来构建,它给了我同样的错误,但是当我切换到“打开 Visual Studio 命令提示符 (2010)”时,我有问题奇迹般地解决了。

      【讨论】:

        猜你喜欢
        • 2010-11-13
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 2020-07-07
        • 1970-01-01
        • 2017-02-10
        • 2016-07-20
        • 2015-12-26
        相关资源
        最近更新 更多