MSBuild任务配置属性

时间:2009-04-06 12:18:07

标签: msbuild msbuild-task

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

当运行一个简单的MSBuild脚本明确声明要构建的配置(Debug)时,第一个项目仍然构建为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,它是一个从头开始创建的简单项目文件。

如何解决此问题?

4 个答案:

答案 0 :(得分:27)

关于平台任何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" - 无空间

答案 1 :(得分:8)

好的,我发现了这个问题。与MSBuild无关,而是与构建的解决方案相关。张贴以拯救别人的心痛。

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

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

所以MSBuild只做了它所说的......

答案 2 :(得分:8)

我得到同样的错误。解决方案是使用以下方式明确指定目标平台:

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

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

答案 3 :(得分:1)

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

另外,旁白:我认为你想要“AnyCPU”(没有空格)。