如何为MSBuild指定平台?

我正在尝试使用MSBuild与指定的目标平台(我需要二进制文件,x86和x64)build立一个解决scheme。 这是我的尝试:

C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86" 

但是,如果平台与“任何CPU”不同,构build总是失败。 我究竟做错了什么?

这是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设开始1.7.2010 8:28:10。 在节点0(重build目标(s))上项目“SolutionPath \ Solution.sln”。 SolutionPath \ Solution.sln:错误MSB4126:指定的解决schemeconfiguration“Release | x86”无效。 请使用configuration和平台属性(例如MSBuild.exe Solution.sln / p:Configuration = Debug / p:Platform =“Any CPU”)指定一个有效的解决schemeconfiguration文件,或保留这些属性为空,以使用默认解决schemeconfiguration。 完成build设项目“SolutionPath \ Solution.sln”(重build项目) – 失败。

build立失败。

“SolutionPath \ Solution.sln”(重build目标)(1) – >(ValidateSolutionConfiguration目标) – > SolutionPath \ Solution.sln:错误MSB4126:指定的解决schemeconfiguration“Release | x86”无效。 请使用configuration和平台属性(例如MSBuild.ex e Solution.sln / p:Configuration = Debug / p:Platform =“Any CPU”)指定有效的解决schemeconfiguration,或将这些configuration保留为空以使用默认的解决schemeconfiguration。

 0 Warning(s) 1 Error(s) 

时间已过00:00:00.03

如果我尝试使用devenv为x86 / x64构build它,它可以很好地工作,但是我正在尝试设置构build服务器而不安装所有必需的Visual Studio版本。 顺便说一句,如果有一个更好的免费工具(支持.NET Framework 4),我很乐意听到这个消息。

如果要为x86x64构build解决scheme,则必须为两个平台configuration解决scheme。 其实你只是有一个任何CPUconfiguration。

如何检查项目的可用configuration

要检查给定项目的可用configuration,请打开项目文件(例如*.csproj ),然后查找具有正确ConditionPropertyGroup

如果你想为x86构buildRelease模式,你的项目文件中必须有这样的内容:

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> ... </PropertyGroup> 

如何在Visual Studio中创build和编辑configuration

configurationpipe理器面板http://i.msdn.microsoft.com/Cc563937.11a492fe-e240-4cdd-9b53-b6aae7224b09(en-us,office12);.jpg

新的解决scheme平台buttonhttp://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_15.png

新解决scheme平台面板http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_18.png

如何创build和编辑configuration (在MSDN上)

在MSBuild或Teamcity中使用命令行

 MSBuild yourproject.sln /property:Configuration=Release /property:Platform=x64 

或使用较短的forms:

 MSBuild yourproject.sln /p:Configuration=Release /p:Platform=x64 

但是,无论如何,您需要在您的项目中设置平台,请参阅Julien Hoarau的答案。

如果您正尝试从命令行执行此操作,则可能会遇到一个问题,即您正在为您设置一个机器范围的环境variables“Platform”(平台)并与您一起工作。 我可以重现这一点,如果我使用VS2012命令窗口,而不是一个常规的Windows命令窗口。

在命令提示符下键入:

设置平台

在一个VS2012命令窗口中,我有一个'X64'预置的值。 这似乎干涉我的解决scheme文件中的任何内容。

在一个常规的命令窗口中,'set'命令产生一个“variables未定义”的消息,这是很好的。

如果上面的'set'命令的结果没有返回任何环境variables值,那么你应该很好。