【问题标题】:MSBuild task configuration propertyMSBuild 任务配置属性
【发布时间】:2010-10-17 19:06:30
【问题描述】:

我有三个 Visual Studio 解决方案。第一个配置为构建为Release,另外两个设置为构建为Debug

当运行一个简单的 MSBuild 脚本明确说明要构建的配置(调试)时,第一个项目仍然构建为 Release。

示例脚本:

<Target Name="Build">
    <ItemGroup>
        <ProjectToBuild Include="$(SolutionsPath)\Solution1.sln"/>
        <ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln"/>
        <ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln"/>
    </ItemGroup>
    <MSBuild Projects="@(ProjectToBuild)"
             Targets="Rebuild"
             Properties="Configuration=Debug;Platform=Any CPU"/>
</Target>

我已经尝试了上述的变体,例如以下,但我总是得到相同的结果。

<Target Name="Build">
    <ItemGroup>
        <ProjectToBuild Include="$(SolutionsPath)\Solution1.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>

        <ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>

        <ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <MSBuild Projects="@(ProjectToBuild)"
             Targets="Rebuild"
             Properties="Platform=Any CPU"/>
</Target>

我注意到有一个类似的问题,MSBuild task - Build fails because one solution being built in release instead of debug,但这是针对 TFS 和 Teambuild 的。我说的是纯 MSBuild 和一个从头开始创建的简单项目文件。

我该如何解决这个问题?

【问题讨论】:

    标签: msbuild msbuild-task


    【解决方案1】:

    您是否尝试过使用 /v:diag 运行?

    另外,顺便说一句:我认为你想要“AnyCPU”(没有空间)。

    【讨论】:

    • 仅供参考,任何 CPU 都是正确的...:错误 MSB4126:指定的解决方案配置“Debug|AnyCPU”无效。请使用配置和平台属性指定有效的解决方案配置(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform="Any CPU")
    • 有同样的事情......查看 .csproj 文件,那里的平台被命名为 AnyCpu(无空格),因此在 buildscript 中更改它解决了问题。
    【解决方案2】:

    好的,我找到了问题。与 MSBuild 无关,而是正在构建的解决方案。发帖拯救别人的心痛。

    无论出于何种原因,在解决方案中配置了调试配置,如下所示:

    alt text http://www.freeimagehosting.net/uploads/cad0bdf1c0.jpg

    所以 MSBuild 也只是在做它被告知的事情......

    【讨论】:

    • 我想都是那些小蚂蚁。
    • 图片链接损坏,考虑发布实际源代码。
    【解决方案3】:

    我遇到了同样的错误。解决方案是明确指定目标平台:

    msbuild.exe /p:Platform="Any CPU"
    

    这只是在我升级到 Windows 7 后才开始发生的,所以我想这与此有关。

    【讨论】:

      【解决方案4】:

      关于平台任何 cpu 的拼写问题,事实证明存在一个问题,已在 StackOverflow 和 Microsoft 的其他地方报道过。它通常会影响 MSBuild,我的 dotnet v3.5 MSBuild /help 中省略了 Platform 文档的整个问题。所以也许这会对某人有所帮助!

      链接

      "AnyCPU" vs "Any CPU" in TFS 2010
      MSBuild inconsistent platform for "Any CPU" between solution and project

      Closed as Won't Fix   
      Type:  Bug
      ID:  503935  
      Opened:  10/26/2009 1:29:12 PM
      Access Restriction:  Public  
      0 Workaround(s)
      5 User(s) can reproduce this bug  
      

      MSBuild Platform 属性对于Any CPU 具有不同的值,具体取决于您是构建解决方案还是构建项目
      - 解决方案 - 使用Platform="Any CPU" - 带空格
      - 项目 - 使用Platform="AnyCPU" - 没有空格

      【讨论】:

      猜你喜欢
      • 2013-02-14
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 2011-10-20
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多