我正在尝试使用 MSBuild 构建具有指定目标平台的解决方案(我需要二进制文件,x86 和 x64)。这就是我尝试的方式:
C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"
但是,如果平台与“任何 CPU”不同,则构建总是失败。我究竟做错了什么?
这是 MSBuild 打印的 while 输出:
C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform=”x86” Microsoft (R) Build Engine Version 3.5.30729.1 [ Microsoft .NET Framework,版本 2.0.50727.3082] 版权所有 (C) Microsoft Corporation 2007。保留所有权利。 构建开始于 1.7.2010 8:28:10。节点 0 上的项目“SolutionPath\Solution.sln”(重建目标 t(s))。SolutionPath\Solution.sln:错误 MSB4126:指定的解决方案配置“Release|x86”无效。请使用配置和平台属性(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=”Any CPU”)指定有效的解决方案配置,或将这些属性留空以使用默认解决方案配置。完成构建项目“SolutionPath\Solution.sln”(重建目标)——失败。 构建失败。 “SolutionPath\Solution.sln”(重建目标)(1)->(ValidateSolutionConfiguration 目标)->SolutionPath\Solution.sln:错误 MSB4126:指定的解决方案配置“Release|x86”无效。请使用 Configuration 和 Platform 属性(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=”Any CPU”)指定有效的解决方案配置,或将这些属性留空以使用默认解决方案配置。 0 Warning(s) 1 Error(s) 经过时间 00:00:00.03
C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform=”x86” Microsoft (R) Build Engine Version 3.5.30729.1 [ Microsoft .NET Framework,版本 2.0.50727.3082] 版权所有 (C) Microsoft Corporation 2007。保留所有权利。
构建开始于 1.7.2010 8:28:10。节点 0 上的项目“SolutionPath\Solution.sln”(重建目标 t(s))。SolutionPath\Solution.sln:错误 MSB4126:指定的解决方案配置“Release|x86”无效。请使用配置和平台属性(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=”Any CPU”)指定有效的解决方案配置,或将这些属性留空以使用默认解决方案配置。完成构建项目“SolutionPath\Solution.sln”(重建目标)——失败。
构建失败。
“SolutionPath\Solution.sln”(重建目标)(1)->(ValidateSolutionConfiguration 目标)->SolutionPath\Solution.sln:错误 MSB4126:指定的解决方案配置“Release|x86”无效。请使用 Configuration 和 Platform 属性(例如 MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=”Any CPU”)指定有效的解决方案配置,或将这些属性留空以使用默认解决方案配置。
0 Warning(s) 1 Error(s)
经过时间 00:00:00.03
如果我尝试使用 devenv 为 x86/x64 构建它,它可以完美运行,但是我试图在不安装所有必要版本的 Visual Studio 的情况下设置构建服务器。顺便说一句,如果有更好的免费工具(支持 .NET 框架 4),我很想听听。
如果您想为 x86 和 x64 构建解决方案,则必须为这两个平台配置您的解决方案。实际上,您只有一个 Any CPU 配置。
要检查给定项目的可用配置,请打开项目文件(*.csproj例如)并查找PropertyGroup右侧的Condition.
*.csproj
PropertyGroup
Condition
如果你想在Release模式中构建x86,你的项目文件中必须有这样的东西:
Release
x86
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> ... </PropertyGroup>
(来源:microsoft.com)
(来源:msdn.com)
如何创建和编辑配置(在 MSDN 上)