我正在尝试使用MSBuild来构建具有指定目标平台的解决方案(我需要二进制文件,x86和x64) . 这是我尝试的方式:
C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"
但是,如果平台与“任何CPU”不同,则构建始终会失败 . 我究竟做错了什么?
这是while输出MSBuild打印:
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.保留所有权利 . Build于2010年7月1日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”(重建目标) - 失败 . Build 失败 . “SolutionPath \ Solution.sln”(重建目标)(1) - >(ValidateSolutionConfiguration target) - > SolutionPath \ Solution.sln:错误MSB4126:指定的解决方案配置“Release | x86”无效 . 请使用Configuration和Platform属性指定有效的解决方案配置(例如,MSBuild.ex e Solution.sln / p:Configuration = Debug / p:Platform =“Any CPU”)或将这些专业保留为空以使用默认解决方案配置 . 0警告
1个错误
时间流逝00:00:00.03
如果我尝试使用devenv为x86 / x64构建它,它可以很好地工作,但是我正在尝试设置构建服务器而不安装所有必需的Visual Studio版本 . 顺便说一句,如果有一个更好的免费工具(支持.NET框架4),我很乐意听到它 .
3 回答
如果要为 x86 和 x64 构建解决方案,则必须为两个平台配置解决方案 . 实际上你只有 Any CPU 配置 .
如何检查项目的可用配置
要检查给定项目的可用配置,请打开项目文件(例如
*.csproj
)并查找右Condition
的PropertyGroup
.如果要为
x86
构建Release
模式,则必须在项目文件中包含以下内容:如何在Visual Studio中创建和编辑配置
Configuration Manager panel http://i.msdn.microsoft.com/Cc563937.11a492fe-e240-4cdd-9b53-b6aae7224b09(en-us,office.12).jpg
New solution platform button http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_15.png
New solution platform panel http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_18.png
How to create and edit the configuration(在MSDN上)
在MSBuild或Teamcity中使用命令行
或使用较短的形式:
无论如何,您需要在项目中设置平台,请参阅Julien Hoarau的答案 .
如果您尝试从命令行执行此操作,则可能会遇到一个问题,即为您设置了计算机范围的环境变量“Platform”并对您不利 . 如果我使用VS2012命令窗口而不是常规的Windows命令窗口,我可以重现这一点 .
在命令提示符下键入:
在VS2012命令窗口中,我有一个'X64'预设值 . 这似乎会干扰我的解决方案文件中的任何内容 .
在常规的命令窗口中,'set'命令会产生一个“未定义的变量”消息......这很好 .
如果上面的'set'命令的结果没有返回环境变量值,那么你应该很高兴 .