MSBuild任务配置属性

cro*_*eym 19 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>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以上的变体,如下所示,但我总是得到相同的结果.

<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>
Run Code Online (Sandbox Code Playgroud)

我注意到有一个类似的问题,MSBuild任务 - 构建失败,因为一个解决方案是在发布而不是调试中构建的,但这是特定于TFS和Teambuild.我正在谈论纯MSBuild与从头开始创建的简单项目文件.

我该如何解决这个问题?

Ann*_*ile 27

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

链接

TFS 2010中的"AnyCPU"与"任何CPU"
MSBuild解决方案和项目之间"任何CPU"的不一致平台

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  
Run Code Online (Sandbox Code Playgroud)

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

  • 这必须是微软团队所见过的最糟糕的决定之一. (7认同)

cro*_*eym 8

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

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

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

所以MSBuild只是按照它所说的去做......

  • 图片链接已损坏,请考虑发布实际源代码. (12认同)
  • 我想这就是那些小小的蚂蚁. (2认同)

Nat*_*han 8

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

msbuild.exe /p:Platform="Any CPU"
Run Code Online (Sandbox Code Playgroud)

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