原文 Windows Phone 8初学者开发—第8部分:理解编译和部署

第8部分:理解编译和部署

原文地址:

http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-8-Understanding-Compilation-and-Deployment

系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners

Source Code: http://aka.ms/absbeginnerdevwp8

PDF Version: http://aka.ms/absbeginnerdevwp8pdf

如果您回想一下C#基础系列(C# Fundamentals series),C#编译器编译项目中的代码以创建一个.Net程序集。最终结果通常(至少在简单的控制台应用程序的情况下)是一个后缀名为".exe" 可执行文件。虽然在Visual Studio中我们均与应用程序的调试版本打交道,通过将解决方案配置更改为发布(Release),只要用户计算机上安装了相同版本的.Net框架运行 时,我们就可以创建适合发布到另一个用户计算机上的应用程序版本。

在本课中,我将讨论如何将我们构建的应用程序部署到运行Windows Phone 8操作系统的物理设备上。到目前为止,我们仅将应用程序部署到手机模拟器上。编译和部署步骤对我们来说是自动化的,我们并不知道程序如何被打包并安装到模 拟器上。我们需要理解应用程序被打包的方法,因为无疑我们需要将应用程序部署到物理的手机设备上以进行测试,并且我们需要将应用程序打包以便可以将它们提 交至Windows应用商店进行审核、下载或销售。

因此我们本课的计划是:

  1. 我希望我们能够看到当编译应用程序时会发生什么,Visual Studio创建了什么?结果是我们可以学会一些有关部署过程的内容。
  2. 我想部署到一个实际的物理手机设备,以查看PetSounds应用程序运行在一个实际的手机上。

1.在编译和部署期间会发生什么

每次当您按键盘上的F5键或工具栏上的运行按钮以运行应用程序时,Visual Studio都会创建应用程序的调试版本。如果您回想一下C#基础系列,它将创建一个Bin\Debug文件夹以存放.NET程序集和任何运行应用程序所 需的其他文件。这就是PetSounds应用程序的Bin\Debug文件夹:

在这里有.NET程序集PetSounds.dll,一个可以忽略的文件PetSounds.pdb(它用于Visual Studio调试器和应用程序运行版本之间的协调)。还有一些文件夹与Visual Studio项目中的文件夹相匹配,比如Assets文件夹,用于存放AppResources.resx西班牙语版本的es文件夹以及 Properties文件夹。接着还有一个AppManifest文件和一个PetSounds_Debug_AnyCPU.xap文件。

这个.xap文件很大(6MB)。我碰巧知道这个文件后缀表示它是一个部署包。它是一个包含所有文件和配置的文件,被用于将应用程序部署到Windows Phone 8操作系统。

让我们再次找点乐子!我将该文件拷贝到桌面,右键单击文件并选择复制。

我右键单击桌面并选择复制。

一旦文件出现在我的桌面上,我右键单击它并选择重命名。

我将文件后缀名从.xap更改为.zip。Windows提示我可能会损坏文件:

这是只是一个拷贝,并且Visual Studio在每次部署时都会创建一个新的.xap,所以我选择对话框中的是选项。

现在文件看起来和我机器上的其他.zip文件一样。

如果在Windows资源管理器中选择文件,即使我没有选择提取,我也可以看到其中的内容:

原来这个.xap文件实际上是一个.zip文件,它本质上包含我们在项目的\Bin\Debug文件夹下看到的文件。进入/Assets子文件夹:

最终进入/Audio和/Animals文件夹,在这里我看到了在前几节课上我们拷贝到项目中的.wav文件

让我们回到.zip文件的根目录,我想查看AppManifest.xaml和WMAppManifest.xml文件中的内容,我右键单击WMAppManifest.xml文件:

您可能被询问在Windows 8中用哪个应用程序打开这个文件。选择记事本。

在记事本中您可以看到WMAppManifest.xml的原始内容。它是XML格式,并且内容很多。在Visual Studio中该文件的复杂性通过一个友好的“设计器”被隐藏起来。Visual Studio中的一个页面限制了我们可以对该文件进行的更改。

真正的问题是:“这个文件存在的目的是什么?”

WMAppManifest.xml的目的是将您的应用程序介绍给手机。它告诉手机使用哪个图像作为开始屏幕和应用页面的磁贴。它告诉手机我们希望 使用哪些功能和我们可以支持哪些语言。它告诉手机应用的名称是什么,应用程序是哪一个版本,我们支持哪些屏幕分辨率等内容。它负责把我们的应用程序集成到 Windows 8操作系统和应用程序的生态系统。

2. 部署到一部物理手机

本课我想做的最后一件事是将应用程序部署到我的Lumia 920。本课的其余部分假设您已经有一个Windows Phone开发中心的会员。每年的费用是99美元。

首先,我用手机附带的USB线把电话插进我的电脑。我之前为了传输音乐或为手机充电已经多次这样做过,但是从来没有为了部署一个应用程序而这样做。

在Visual Studio中,我使用运行按钮旁的向下箭头将设置从在模拟器中调试更改为在设备中调试。

接着,我单击工具栏上面的运行按钮,但是会出现一个错误:

(未能连接到设备,因为它已由开发人员锁定。有关开发人员解锁的详细信息,请访问http://go.microsoft.com/fwlink/?LinkId=195284)

因此,我需要做的第一件事是解锁手机以用于开发。使用以下连接以获取更多信息:

http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff769508(v=vs.105).aspx

我将搜索Windows Phone开发人员注册应用程序(Windows Phone Developer Registration),它随Windows Phone 8 API一起安装在我的电脑上。

在Windows 8中,转到搜索超级按钮(Search charm):

并输入”Regi”

这足以找到Windows Phone开发人员注册应用程序:

运行该应用程序。它将带您返回桌面并显示以下对话框,正如您所看到的,它试图确定您手机的状态,但是锁屏界面是锁住的。

我将锁屏界面解锁并单击重试按钮。

我单击注册按钮,它让我登录到我的微软账户。

请注意,由于某些原因,它总是要求我登录两次。如果您遇到类似的行为,请不要慌张。您通常可以在第二次尝试时进入。

稍等片刻,我将收到一个确认:手机被成功解锁以用于开发。

我可以通过登录以下网址进行确认:

http://dev.windowsphone.com

  1. 我导航至仪表板
  2. 账户
  3. 手机

我刚注册的手机在这里正确显示。

您将注意到手机的名称:” Bob Tabor’s Phone”,我曾在Windows资源管理器中通过右键单击手机并选择“重命名”更改过手机名称。这将允许我测试多个电话并将它们区分开来。

现在我已经注册完手机,我应该可以将应用部署到手机上了。

但是

(未能连接到设备,因为它被密码锁定。)

我必须解锁设备的锁屏界面并再次测试:

在克服所有困难后,我终于看到PetSounds应用程序在我手机上运行了。

我不仅能够看到它而且它能够正常工作。我可以用鸭子的嘎嘎声去打搅我的小孩和宠物了!

为了退出调试,可以使用Visual Studio工具栏上的停止按钮。

即使我停止设备上的应用程序的调试,应用程序还在设备上,即使我从计算机上拔下设备,我仍然可以运行它。每次进行调试,与使用模拟器时一样,它将会把应用程序的最新版本部署至物理设备。

在继续之前,您可能会看到如下的消息:

(不能安装应用程序。本手机已达到开发人员应用程序的最大数量。请卸载应用程序并重试。)

显然,您可以部署到手机上的应用程序有数量的限制。这个数量限制为10。如果出现这种情况,您可以卸载一个或多个开发者应用程序,方式和您卸载普通应用程序相同,即按住磁贴并选择卸载。

假设由于某种原因您需要注销用于开发的手机,您可以重新运行Windows Phone开发者注册工具,它将识别出手机被解锁用于开发并提供一个选项以注销手机:

(状态:被识别的Windows Phone 8设备。本设备当前被解锁用于开发。单击注销按钮以锁定手机。)

3. 成为Windows Phone开发中心的成员

最后,正如我较早前提到的,在注册手机用于开发并部署应用到手机以进行测试前,或随后在市场销售您的应用程序,您需要成为Windows Phone开发中心的会员。如果您直接从微软购买,每年的费用是99美元。

然而还有第二个选项。诺基亚有一个针对Lumia系列的高级开发者计划,它不仅提供一个Windows Phone开发中心的会员资格,还能提供Telerik公司的Rad Controls for Windows Phone(一组针对Windows Phone开发的控件),Buddy.com的会员和当您在开发或部署应用程序过程中遇到问题时可以使用的两个诺基亚技术支持。我参与了这个计划并且它工 作良好。

http://www.developer.nokia.com/Developer_Programs/Lumia_developer_program.xhtml

回顾

综上所述,本课的重点是部署包的组成,WMAppManifest.xml文件的目的,部署到物理手机设备以便在Visual Studio中进行调试。我们讨论了注册您的物理设备并对其进行解锁以将开发者应用程序发布到该设备上,以及如何获取一个Windows Phone开发中心的账号。

Windows Phone 8初学者开发—第8部分:理解编译和部署的更多相关文章

  1. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  2. Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式

    原文 Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式 第13部分:设置LongListSelector中磁贴的样式 原文地址: http://c ...

  3. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据

    原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...

  4. Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序

    原文 Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8- ...

  5. Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介

    原文 Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...

  6. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

    原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述 第9部分:Windows Phone 8模拟器概述 原文地址: http://channel9.ms ...

  7. Windows Phone 8初学者开发—第7部分:本地化应用程序

    原文 Windows Phone 8初学者开发—第7部分:本地化应用程序 第7部分:本地化应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...

  8. Windows Phone 8初学者开发—第6部分:设置应用程序的样式

    原文 Windows Phone 8初学者开发—第6部分:设置应用程序的样式 Source Code: http://aka.ms/absbeginnerdevwp8  PDF Version: ht ...

  9. Windows Phone 8初学者开发—第5部分:布局和事件基础

    原文 Windows Phone 8初学者开发—第5部分:布局和事件基础 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Developme ...

随机推荐

  1. string s = HttpContext.Current.Server.MapPath("");

    string s = HttpContext.Current.Server.MapPath(""); 获取当前文件夹路径 而后用相对路径读取图片

  2. 【微信公众号】WeixinJSBridge.call('closeWindow')无效

    公众号上面使用iframe嵌套子页面,然而子页面无法使用WeixinJSBridge.call('closeWindow') 这时候必须在函数前面加上parent.,比如parent.WeixinJS ...

  3. iOS 技能集结号

    1. 获取磁盘总空间大小 2. 获取磁盘可用空间大小 3. 获取指定路径下某个文件的大小 4. 获取文件夹下所有文件的大小 5. 获取字符串(或汉字)首字母 6. 将字符串数组按照元素首字母顺序进行排 ...

  4. Python 爬取CSDN博客频道

    初次接触python,写的很简单,开发工具PyCharm,python 3.4很方便 python 部分模块安装时需要其他的附属模块之类的,可以先 pip install wheel 然后可以直接下载 ...

  5. 【转】AC算法详解

    原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...

  6. Http报文格式学习及Get和Post主要区别总结

    HTTP(HyperText Transport Protocol,超文本传送协议) http请求数据包的格式:头部(request line + header)+  数据(data) 头部和数据包体 ...

  7. InfoQ文章

    http://www.infoq.com/cn/presentations/log-platform-construction-weipinhui https://github.com/Telesco ...

  8. HDU 2152 Fruit

    系数为1的母函数…… #include <cstdio> #include <cstring> using namespace std; int n,m,size[105][2 ...

  9. 第三章 线性表(C#实现)

    1.线性表 概念::零个或多个数据元素的有序序列. 描述: 2.线性表的抽象数据类型: ADT线性表 Data:线性表的数据对象集合为{a1,a2,...,an},每个元素的类型均为DataType. ...

  10. hdoj 3478 Catch(二分图判定+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3478 思路分析:该问题需要求是否存在某一个时刻,thief可能存在图中没一个点:将该问题转换为图论问题 ...