我有三个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,它是一个从头开始创建的简单项目文件。
如何解决此问题?
答案 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”(没有空格)。