没有Visual Studio的Windows Mobile开发(译文)
By S.F.
本文链接 https://www.kyfws.com/news/windows-mobile-development-without-visual-studio/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 15 分钟阅读 - 7131 个词 阅读量 0没有Visual Studio的Windows Mobile开发(译文)
原文地址:https://www.codeproject.com/Articles/31861/Windows-Mobile-Development-Without-Visual-Studio
原文作者:Joel Ivory Johnson
译文由本站翻译
前言
为无法获取Visual Studio的用户启动并运行Windows Mobile Professional开发环境的指南.
介绍
时不时地,在用于Windows Mobile开发的最小工具集上的MSDN支持论坛中,这个问题再次浮出水面.有时,查询者负担不起可用的最佳开发工具(Visual Studio).尽管仅使用.NET Framework SDK即可执行Windows Mobile开发,但到目前为止我从未尝试过(我通常使用VS 2008 Professional).我刚刚在我的一台计算机上执行了Vista的全新安装,因此我将其全新的状态作为机会,尝试在不使用Visual Studio的情况下执行某些开发并验证所需内容.
为什么不使用Visual Studio Express?
Visual Studio的Express版本是免费的.那么为什么不使用它们呢?原因很简单.当前,没有Visual Studio Express版的版本可用于移动设备的Compact Framework开发.
该文章涵盖哪些内容?
本文的读者应该已经知道如何使用C#进行编程,或者拥有学习该语言的资源.同样,本文的读者应该已经可以访问用于学习Windows Mobile的资源.本文的目的不是要教一个如何编程.相反,它是为Windows Mobile开发获取并运行最少的工具集的指南.尽管本文提供了在极高的预算下创建最小开发环境的信息,但如果您负担得起Visual Studio的费用,我不建议您采用这种方法.您的时间很宝贵,使用Visual Studio将帮助您更有效地利用时间.它提供了许多功能增强功能,可以极大地提高开发人员的生产率.但是,如果您想进行一些Windows Mobile开发而不对这些工具进行财务投资,请继续阅读.
资源链接
在本文中,我将引用您可以免费下载的资源.我在下面列出了这些资源的链接:
- 面向.NET CF 2.0(x86)的.NET Framework 2.0 SDK
- 面向.NET CF 2.0(x64)的.NET Framework 2.0 SDK
- 面向.NET CF 2.0(IA64)的.NET Framework 2.0 SDK
- Windows Server 2008和.NET Framework 3.5的Windows SDK以.NET CF 3.5为目标
- .NET 3.5 SP1
- Windows Mobile 6.1本地化的模拟器没有WinMo电话
- .NET Compact Framework 3.5可再发行
- .NET 3.5框架的强大玩具
- 移动设备中心(适用于Vista)
- 活动同步(适用于Windows XP)
所需的最低软件
当前,您可以选择使用两种框架版本; 2.0 Compact Framework和3.5 Compact Framework. 3.5 Compact Framework是2.0 Compact Framework的超集;它具有2.0 Compact Framework的所有功能以及其他一些功能(例如Windows Communication Foundation和某些与媒体相关的功能).您选择的框架应该是当前需求和目标设备的函数. Windows Mobile 6.0和6.1将2.0框架包含在ROM映像中.除非我在3.5框架中需要功能,否则我通常会以2.0框架为目标. Windows Mobile 5设备没有预安装2.0或3.5 CF,因此,无论使用哪种框架,都可以选择需要在设备默认映像之上安装的.NET CF可再发行组件. .NET 2.0和3.5 SDK附带了Compact Framework,尽管默认情况下未安装.对于2.0 SDK,在安装SDK(c:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ CompactFramework)之后,可以在NETCFSetupV2.msi的Compact Framework目录中找到该Compact Framework.对于3.5 SDK,将显示Compact Framework是默认情况下未选中的安装选项.确保选择它.是的,您可以将两个框架安装在同一台计算机上而不会发生冲突.继续安装框架SDK和Compact Framework.安装软件后,请运行Windows Update,以确保您具有针对该软件发布的所有更新.
文件位置
安装SDK之后,您将想知道一些重要文件在哪里.假设您选择了默认安装位置,则可以在以下位置找到文件:
编译您的第一个程序
在下一部分中,我们将编译一个" Hello World"程序.这里的重点是编译器,而不是代码.因此,我将从一个简单的例子开始.打开记事本,然后键入以下内容(或从本文包含的代码中复制它):
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MyNamespace
{
class HelloWorldForm : System.Windows.Forms.Form
{
Label lblHello;
Button btnClose;
public HelloWorldForm()
{
this.Text="Hello World Sample";
btnClose = new Button();
lblHello = new Label();
btnClose.Click += new EventHandler(btnClose_Click);
btnClose.Text="Close";
btnClose.Location = new Point(10,100);
btnClose.Size = new Size(200,50);
lblHello.Text = "Hello World!";
lblHello.Location = new Point(10, 10);
lblHello.Size = new Size(200,50);
SuspendLayout();
this.Controls.Add(lblHello);
this.Controls.Add(btnClose);
ResumeLayout(false);
}
void btnClose_Click(object sender, EventArgs args)
{
this.Close();
}
[MTAThread]
static void Main()
{
HelloWorldForm mainForm = new HelloWorldForm();
Application.Run( mainForm );
}
}
}
将文件另存为HelloWorldForm.cs. 安装.NET SDK后,它将在"程序文件"->" Microsoft Windows SDK 6.1"中创建一个名为" Cmd Shell"的图标.单击此图标将打开一个命令提示符实例,其路径变量已设置,以便可以找到命令行编译器.单击此图标以打开命令提示符,然后导航到保存源文件的目录.输入以下内容:
csc HelloWorldForm.cs
运行后,您将在同一文件夹中有一个名为HelloWorld.exe的新文件.继续运行它.您将看到一个简单的表单,其中显示文本" Hello World"和"关闭"按钮.该可执行文件不会在您的移动设备上运行,因为编译器将其链接到桌面框架程序集.让我们为Compact Framework重新编译它的适当方法.我在本文中包含了两个批处理文件,以针对2.0 CF和3.5 CF编译项目.如果将SDK安装在默认位置以外的其他位置(或者如果您使用的是64位版本的Windows,则路径会有所不同),则需要更新这些批处理文件.
SET FrameworkAssemblyPath="C:\Program Files\Microsoft.Net\SDK\
CompactFramework\v3.5\WindowsCE"
REM the following should be on one line but is broken into
several lines for readability.
csc.exe /nologo /nostdlib /noconfig /out:HelloWorld.exe
/r:""%FrameworkAssemblyPath%\mscorlib.dll""
/r:""%FrameworkAssemblyPath%\System.dll""
/r:""%FrameworkAssemblyPath%\System.Windows.Forms.dll""
/r:""%FrameworkAssemblyPath%\System.Drawing.dll""
HelloWorldForm.cs
我将解释以上所有功能:
- SET FrameworkAssemblyPath =" C:\ …"
- 脚本文件
- 脚本文件
- /nologo
- /nostdlib
- /noconfig
- /out:HelloWorld.exe
- /r:""%FrameworkAssemblyPath%\xxx.dll"" 编译程序后,您将拥有一个将在Windows Mobile设备上运行的可执行文件.您现在可以运行该应用程序,它将在桌面上运行.但是,不要仓促得出结论,所有Compact Framework程序都将在桌面上运行.
在没有物理设备的情况下测试程序
假设您没有物理Windows Mobile设备.您可以从本文顶部的链接下载Windows Mobile模拟器.可用多种不同的语言本地化仿真器.有两种主要方法可用于将文件复制到仿真器上.一种方法是与仿真器共享文件夹,另一种方法是将仿真器停靠到ActiveSync(在Windows XP上)或Windows Mobile设备中心(在Vista上).我将首先指导您共享文件夹.
在桌面上共享文件夹
启动Windows Mobile Professional模拟器之一.打开"文件"菜单,然后选择"配置". “常规"选项卡底部的选项是"共享文件夹”.您可以在此处输入桌面上文件夹的路径.选择"确定"后,该文件夹将在模拟器中显示为存储卡.输入您的.NET CF可执行文件的路径.在仿真器上,导航到设备上的存储卡并打开可执行文件.
将仿真器连接到活动同步
要在仿真的Windows Mobile设备运行时将其停靠,请选择"程序文件"->" Windows Mobile 6 SDK"->“工具”->“设备仿真器管理器”.您会看到列出的仿真设备.右键单击它,然后选择"支架".片刻之后,当您将Windows资源管理器作为连接的设备打开时,该设备将显示.然后,您可以将程序复制到设备.
连接到物理设备
对于物理设备,您只需要将Windows Mobile设备连接到装有Active Sync或Windows Mobile设备中心的计算机.是否与设备建立合作关系都没有关系.打开文件资源管理器后,该设备将可见,您可以将程序直接复制到该设备的文件系统中.
运行程序
现在,无论选择哪种方法将文件放入设备,都可以运行它.继续并打开可执行文件. 糟糕!出现错误! “该应用程序需要比该设备上安装的版本更高的Microsoft®.NET Compact Framework版本.“首先,请验证您设备上的Compact Framework版本.打开文件资源管理器,然后导航到\ Windows文件夹.运行CGACUTIL.EXE.它显示仅安装了2.0框架(或在Windows Mobile 5设备上安装了1.0框架).您将需要安装适当的框架.
将3.5框架安装到设备
在c:\ Program Files \ Microsoft.Net \ SDK \ CompactFrameowork \ v3.5 \ WindowsCE \中查找,您将找到用于.NET CF安装的多个CAB.您要安装一个名为” NETCFv35.wm.armv4i.cab"的文件.将此文件复制到设备的文件系统中,然后使用设备的文件浏览器将其打开以进行安装.安装后,再次运行CGACUTIL.EXE.它将报告您已安装3.5框架.尝试再次运行HelloWorld可执行文件.成功!
将2.0框架安装到设备
如果已经安装了3.5框架,则无需安装2.0框架.如果要安装2.0框架,请查看c:\ Program Files \ Microsoft.NET \ SDK \ Compact Framework \ v2.0 \ WindowsCE \ wce400 \ armv4,然后会找到一个名为” NETCFv2.ppc"的CAB. armv4.cab".将文件复制到设备的文件系统中,然后使用设备的文件浏览器将其打开以进行安装.安装后,再次运行CGACUTIL.exe实用程序.它将报告您已安装2.0框架.如果您现在运行HelloWorld,它将成功.
调试器在哪里?
.NET框架SDK中有一个名为cordbg.exe的命令行调试器.调试器以前支持连接到智能设备.目前,它还没有(尽管cordbg.exe上的MSDN文档将另行建议).由于缺少此调试器,因此,如果您想有效地调试程序,则别无选择,只能购买Visual Studio.
添加一个IDE:SharpDevelop
好的IDE是开发的必备条件.而且,您可以免费获取用于Compact Framework开发的最佳IDE是SharpDevelop. SharpDevelop是一个开源.NET IDE. SharpDevelop的3.0版支持2.0和3.5 Compact Framework.安装SharpDevelop之后,您还需要确保已安装.NET 3.5 CF Powertoys.如果在Compact Framework程序的编译过程中未安装它们,则会收到一个相当模糊的错误,即在编译过程中找不到CSharp.targets.那些已经熟悉Visual Studio的人不会发现SharpDevelop的以下描述中的任何内容都是开创性的.这些功能也以几乎相同的形式出现在Visual Studio中. 与从命令行进行编译相比,使用SharpDevelop进行编译要好得多.您还记得早先使用过的HelloWorld程序必须传递给命令行编译器的多个/r参数吗?在SharpDevelop中,这些引用以图形方式进行管理,默认情况下,最常见的引用将自动包含在您的解决方案中.引用表示的屏幕快照如下所示.要在此列表中包括另一个装配,请右键单击"参考"文件夹,然后选择"添加参考".将出现一个对话框,列出可以添加到项目中的部件.
与标准的文本编辑器相比,SharpDevelop中的源代码编辑器更容易使用.它包括自动完成功能,这在两个方面有很大帮助:自动完成功能将允许您引用长名称的实体,而无需实际输入实体的完整名称,并且还可以作为对您的成员的快速引用类.
SharpDevelop使用选项卡式编辑器界面,使您可以在多个打开的文件中工作.
SharpDevelop还可以使用Visual Studio中内置的解决方案.我下载了BillLange1968的游戏源代码并在SharpDevelop中将其打开.无需任何修改,该代码即可在SharpDevelop中编译并运行.
使用SharpDevelop创建一个新项目
一旦安装了SharpDvelop,就可以通过选择菜单文件->新建->解决方案来开始一个新项目.出现一个对话框,询问您要创建哪种类型的项目.展开此对话框的C#部分,然后单击"紧凑框架".从对话框右上角的下拉列表中选择要使用的Compact Framework的版本,然后输入项目的名称.单击"创建",将创建您的项目.创建项目后,如果在左侧展开文件树,您将在项目中看到总共三个文件(Assembly.cs,MainForm.cs和MainForm.Designer.cs). MainForm.cs和MainForm.Designer.cs都是同一类的一部分. MainForm.Designer.cs用于保存与表单布局相关的所有代码,MainForm.cs用于保存表单的逻辑和行为.在当前状态下,您可以编译并运行该程序(尽管它只会显示空白表格). 再一次,这里的重点是开发环境,而不是代码.因此,我们将对代码做一些非常基本的事情.该表格只有一个按钮.如果用户单击该按钮,将打开一个对话框,显示" Hello World"文本.打开Main.Form.cs,然后在Main方法之前,输入以下内容以声明按钮:
Button btnShowMessage;
打开MainForm.Designer.cs并导航到InitializeComponent
方法.在方法的最后,键入以下内容:
btnShowMessage = new System.Windows.Forms.Button();
btnShowMessage.Text="Show Message!";
btnShowMessage.Size = new System.Drawing.Size(220,100);
btnShowMessage.Location = new System.Drawing.Point(10,10);
this.Controls.Add(btnShowMessage);
为了确保您没有记错,请选择菜单Build-> Build Solution来编译程序.如果您有任何语法错误,它们将列在屏幕底部.纠正错误(如果有)之后,我们需要向项目中添加另一个窗体,该窗体将成为结果对话框.选择顺序File-> New-> File.系统将询问您是否要创建独立文件或项目内部的文件.选择选项以在项目中创建文件.当"新建文件"对话框打开时,从左侧的" C#“组中选择” Windows应用程序",从右侧的模板区域中选择"窗体".输入" MyDialog.cs"作为文件名,然后按"创建".两个文件将被添加到您的项目中:MyDialog.cs和MyDialog.Designer.cs.
打开MyDialog.Designer.cs并导航到InitializeComponent
方法.在方法末尾,输入以下内容:
System.Windows.Forms.Label myLabel = new System.Windows.Forms.Label();
myLabel.Text="Hello World";
myLabel.Location = new System.Drawing.Point(10, 10);
myLabel.Size=new System.Drawing.Size(200,40);
this.Controls.Add(myLabel);
保存您的工作,然后再次编译以确保没有语法错误.现在,我们有了主窗口和一个对话框.剩下要做的唯一一件事就是添加代码,该代码将通过显示对话框来响应用户按下按钮.返回MainForm
.cs.在对InitializeComponent的调用之后的行的MainForm构造函数中,输入以下行:
btnShowMessage.Click+= new EventHandler(btnShowMessage_Click);
在构造函数之后,定义一个新方法以响应用户的单击.添加以下代码以创建方法:
void btnShowMessage_Click(object sender, EventArgs e)
{
MyDialog md = new MyDialog();
md.ShowDialog();
}
那是所需的最后代码.再编译一次项目.如果编译没有错误,请选择"调试"->“运行"以运行代码.随即出现一个带有按钮的窗口.单击该按钮将显示对话框.但是,此程序在桌面而不是在移动设备上运行. SharpDevelop当前的局限性在于它将无法调试在设备仿真器或实际电话中运行的程序.对于此程序,在桌面上对其进行测试不会带来很多后果.如果我们编写的程序使用的功能通常不是在桌面上实现的(例如发送SMS消息),或者我们进行过P/Invoke调用,那么我们别无选择,只能在一个实际设备或仿真器中.
为什么要使用Visual Studio?
如果我要给某人从上面的说明,然后将该人坐在Visual Studio的前面而不是SharpDevelop的前面,他们将能够执行上述所有步骤,而过程几乎没有变化.因此,如果他们可以免费使用SharpDevelop,为什么还要为Visual Studio付费呢?虽然两个IDE之间存在许多差异,但此处最重要的差异是设计时支持和调试功能.使用Visual Studio时,只需将按钮从工具面板拖动到模拟屏幕上,即可向界面添加按钮.双击该按钮可启动该按钮的事件处理程序的创建.并且,在Visual Studio中,您可以在设计时看到表单的外观,而不必等到运行时才能看到结果. 在我看来,远程设备上缺乏调试功能是使用SharpDevelop的一个重大缺点.随着您开始编写更复杂的程序,IDE在测试程序中的作用将越来越弱. Visual Studio可以调试在模拟器内或Windows Mobile设备上运行的程序.如果您对Windows Mobile开发很认真,那么您将要使用Visual Studio. 准备好切换到Visual Studio时,请确保获得所需的Windows Mobile和.NET Framework的正确版本. Visual Studio的Express版本不能用于Mobile开发.以下是选项:
未来编辑
如果您觉得我遗漏了重要的信息,请将其留在下面的评论区域中.随着时间的推移,随着SharpDevelop的新版本发布,我希望它的功能会增强.今天SharpDevelop的某些局限性可能不会在明天成为局限性.如果您在发布较新版本时遇到差异,也欢迎对这些改进发表评论.
历史
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
.NET2.0 WinMobile5 .NET3.5 C# WinMobile .NETCF .NET Mobile Dev Intermediate WinMobile6 新闻 翻译