4

我目前正在将现有的跨平台框架移植到 Windows Phone 8。

构建过程是完全自动化的,我们使用的是坚如磐石的 CI 系统。

我可以从 Visual Studio (Express 2012) 构建和部署 Windows Phone 8 示例,但现在我需要将它集成到我们的构建脚本中。

有没有人通过命令行成功构建(和部署)Win Phone 8 应用程序?(或蚂蚁,make,scons 等等……)

如果是,如何?

欢迎任何提示。

4

3 回答 3

6

我使用以下 bat 文件来构建 WP7 代码(在其之上+ant 自动化)。它可能对你有帮助。

构建.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>
于 2012-12-24T11:59:16.450 回答
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 的开发环境。
  • 如果你的应用程序使用了原生库(比如 VS 中安装的 PlayerFramework http://playerframework.codeplex.com/,这些库也应该在运行命令之前安装)
  • 我在 VS2012 Pro 和 VS2012 Premium 和 Jenkins 上使用了这个过程作为构建服务器。

祝你好运,草

于 2014-03-11T02:52:13.907 回答
1

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

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

包含一个 build.bat,它应该足以让您开始使用您选择的构建系统为“windows phone 8”构建。

目前它相当 hacky,但是一旦我完成了当前的项目,我会清理它。

提示: 使用“CL.exe”时,切勿定义“CL”环境变量;)

于 2013-01-04T10:09:37.803 回答