在命令行上构建Windows 8手机应用程序

4
我目前正在将一个现有的跨平台框架移植到Windows Phone 8上。
构建过程完全自动化,我们使用了一个非常稳定的CI系统。
我可以从Visual Studio(Express 2012)构建和部署Windows Phone 8样例, 但现在我需要将其集成到我们的构建脚本中。
有人曾经成功地通过命令行构建(和部署)Win Phone 8应用程序吗? (或者是ant,make,scons等等...)
如果有,如何做到的?
欢迎任何提示。
3个回答

6
我使用以下批处理文件来构建WP7代码(在此基础上进行Ant自动化)。它可能对您有帮助。
build.bat
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.xml /t:BuildAndCopy /p:Revision=123

其中build.xml是类似以下的内容(构建本身位于BuildAll目标下):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
    <PropertyGroup>
        <Major>1</Major>
        <Minor>0</Minor>
        <Build>0</Build>
        <Revision>x</Revision>
        <OutputPath>Build\</OutputPath>
        <OutputPathDebug>..\Build\Debug\</OutputPathDebug>
        <OutputPathRelease>..\Build\</OutputPathRelease>
    </PropertyGroup>
    <Target Name="BuildAll" DependsOnTargets="Clean; Version">
        <msbuild  Projects="SomeApp.sln" Properties="Configuration=Release;OutputPath=$(OutputPathRelease)"/>
        <msbuild  Projects="SomeApp.sln" Properties="Configuration=Debug;OutputPath=$(OutputPathDebug)"/>
    </Target>
    <Target Name="Clean">
        <RemoveDir Directories="$(OutputPath)" Condition="Exists('$(OutputPath)')"/>
        <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')"/>
    </Target>
    <Target Name="Version">
        <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
        <XmlUpdate
                Namespace=""
                XmlFileName="WindowsPhone\Properties\WMAppManifest.xml"
                XPath="//App[@Version]//@Version"
                Value="$(Major).$(Minor).$(Build).$(Revision)"/>
    </Target>

    <ItemGroup>
        <AppFiles Include="$(OutputPath)\**\*.xap"/>
    </ItemGroup>

    <Target Name="BuildAndCopy" DependsOnTargets="BuildAll">
        <Copy
                SourceFiles="@(AppFiles)"
                DestinationFiles="@(AppFiles->'\\fs\Public\projects\mobile\SomeAppWP\$(Major).$(Minor).$(Build).$(Revision)\%(RecursiveDir)%(Filename)%(Extension)')"
                />
        <Copy
                SourceFiles="@(AppFiles)"
                DestinationFiles="@(AppFiles->'\\fs\Public\projects\mobile\SomeAppWP\latest\%(RecursiveDir)%(Filename)%(Extension)')"
                />
    </Target>


</Project>

谢谢,这仍然使用Visual Studio(又名MSBuild)系统来构建项目,但它显示了所有发出的(子)命令,包括它们的完整命令行,这非常有帮助。我会看看它能带我走多远。 - Andreas

4

这应该很简单。我假设您具有以下文件结构。

$/WP8App/SampleApp.sln

您需要在项目中使用路径和解决方案文件。执行以下指令,并确保更新解决方案文件和路径:
  • 打开命令提示符
  • 执行:%VS110COMNTOOLS%vsvars32.bat
  • 执行:%VS110COMNTOOLS%..\..\VC\WPSDK\WP80\vcvarsphoneall.bat
  • 执行:MSBuild "WP8App/SampleApp.sln" /t:rebuild /p:Configuration=Release /p:Platform="Any CPU" /v:d
请注意:
  • 运行这些命令的计算机应已设置 WP8 的开发环境。
  • 如果您的应用程序使用本地库(例如 PlayerFramework http://playerframework.codeplex.com/ 安装在 VS 中),则在运行命令之前还应安装这些库。
  • 我已在 VS2012 Pro 和 VS2012 Premium 以及 Jenkins 作为构建服务器上使用此过程。
祝好运, Herb

1
感谢Sergei提供的MSBuild.exe提示,我能够通过命令行构建一个简单的示例。

https://github.com/AndreasOM/wp8-directx-commandline

这里包含了一个build.bat文件,它应该足以让您开始使用自己选择的构建系统为“Windows Phone 8”构建。

目前它还比较混乱, 但是一旦我完成当前项目, 我会整理它。

提示: 在使用“CL.exe”时,永远不要定义“CL”环境变量;)


我不再进行WP8开发,也没有Windows系统了,所以非常抱歉,我无法再测试这个了 :( - Andreas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接