如何为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),我很乐意听到这个消息。
如果要为x86和x64构build解决scheme,则必须为两个平台configuration解决scheme。 其实你只是有一个任何CPUconfiguration。
如何检查项目的可用configuration
要检查给定项目的可用configuration,请打开项目文件(例如*.csproj
),然后查找具有正确Condition
的PropertyGroup
。
如果你想为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值,那么你应该很好。