设为首页 收藏本站
查看: 1762|回复: 0

[经验分享] 在苹果的Mac OS 上使用.NET 开发应用程序

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-30 01:35:41 | 显示全部楼层 |阅读模式






  MonoMac是面向Mac OSX API的C#绑定,其API设计主要受到了MonoTouch的
启发,后者可以基于Mono开发原生的iOS应用程序。MonoMac套件的目标之一,也是发布独立的
.app应用程序,让最终用户摆脱对Mono的依赖。MonoTouch的成功则是一个良好的基础,于是Mono开始将Cocoa
API使用C#和.NET世界中的模式与惯例用法表现出来,并提供开发人员整套Cocoa应用程序的开发工具。
  Mono之父Miguel de
Icaza表示,.NET从一开始便设计成为一个易于互操作的框架,他对于跨运行时及框架的无缝通信提供了许多高级的支持,这对创建Cocoa
API的绑定很有帮助。MonoMac的设计原则与MonoTouch非常接近,它充分考虑到.NET程序员的习惯需求,例如使用Lambda表达式和委
托来表示Objective-C API中的“block”。
  Cocoa的API由两部分组成,一部分是基于C的API,例如AudioToolbox、CoreGraphics、CoreFundation
和CoreText,它们利用P/Invoke的方式直接封装成C#类。而在UI层面上则是大量的Objective-C编写的API,例如
Foundation和AppKit。MonoMac提供了新的一套新的绑定引擎MonoMac.ObjCRuntime,以及btouch绑定生成器。
  MonoMac仅仅是一套用于开发OSX应用程序的类库。MonoMac团队同样发布了一套基于MonoDevelop的开发工具,其生成结果便是
Mac OS下的app应用程序包。此外,Mono
2.8还包含了一个新工具叫做“Mono打包器(bundler)”。这个打包器可以检查你的.NET应用程序,并将其依赖的部分打包在一起。这个技术如
今已经用于OSX版本的Banshee项目(一款基于Mono和Gtk#的播放器),这样发布后的应用程序无需在目标机器装有Mono框架。
  MonoMac使用MIT X11许可协议发布。源码分为两部分:monomac和maccore,都可以在GitHub上获得。前者包含了面向MacOS的绑定,而后者则包含了MonoMac和MonoTouch共用的代码。
  看完上面这段介绍,聪明的你知道主角是MonoMac了,下面我向大家介绍下开发环境的搭建和第一个Helloworld程序的开发:
  第一步:需要有一台Mac
电脑,可以采用虚拟机搭一个也行,为了更好的操作体验还是准备一台Mac的机器比较好,2011年1月14日苹果优惠打折,毫不犹豫的就在香港apple
商店上下单买回来一个MacBook Air(CPU:1.86 GHz Intel Core 2 Duo, 4GB RAM,128G
SSD),价格10000HK$。
  第二步:Mac开发环境Xcode和Monodevelop的安装,当然在安装mac系统时,如果选择IT用户,很多开发系统也就自动安装好了,比
如jdk、maven、svn,python的环境, 然而不是所有的软件开发环境都会安装好,比如xcode 、ios sdk 。


  • 到Apple's developer program,选择 Mac 和iOS 开发,登陆后就可以下载Mac开发工具,里面包括Xcode,这个工具是免费的,这点比微软的政策好啊,就是要善待开发者。Xcode的环境和 Visual Studio 非常的相像,有Visual Studio的使用经验非常容易入门.。  下载完软件,点击运行如图:
    DSC0000.png
      上边的那幅图中有xcode和IOS SDK的安装说明,下面那幅图是软件安装的图标,点击下边的Xcode and iOS SDK开始安装。
    DSC0001.png
    DSC0002.png
      一路继续就可以了
    DSC0003.png

  • 下载和安装 MonoDevelop 2.4, 这是Mono的一个IDE ,是开源和免费的,他要求 Mono 2.4 和 GTK。 Mono安装过程十分普通,而MonoDevelop的安装方式对于Windows用户可能有些特别。在加载了dmg文件以后,会弹出这样一个界面: DSC0004.png 根据提示,此时您只需要将MonoDevelop的图标拖至右侧目录中就可以了。
  • 下载和安装 MonoMac。 MonoMac的插件安装参考http://www.mono-project.com/MonoMac#Obtaining_MonoMac也很简单。安装完MonoMac的插件,在MonoDevelop的新建项目的对话框上就有了MonoMac的项目类型。
  下面我们就用MonoDevelop和Xcode一起使用来完成第一个Mac Helloworld程序的开发,下面的内容主要基于这篇博客http://www.satter.org/2010/09/net-development-for-os-x.html,所有用到的图片也是这篇博客的,我只是按照这篇博客的内容熟悉了一下开发环境,其中也碰到了一些问题,我会以红色的文字进行标识,相信也是你体验的时候会碰到的问题,不过这篇博客需要FQ才能阅读,你懂的:
  首先需要创建一个MonoMac的工程,我们命名为HelloMonoMac:
DSC0005.png
  MonoDevelop是英文的,
是因为在中文的Mac系统下,MonoDevelop界面上的中文会乱码,通过MonoDevelop—〉Preferences
–>Visual Style –>General—>User Interface Language
选择English就可以解决。
  创建的项目有下面文件:


  • info.plist - 一个文本文件包含应用程序的一些属性字符串,类似于.NET项目的AssemblyInfo.cs,具体参考 reference guide.
  • Main.cs - Main.cs里包含了项目的启动代码.
  • MainMenu.xib - 菜单资源和代码文件. 具体参考Interface Builder User Guide
  • MainWindow.xib - 主窗口的界面文件,具体参考Interface Builder User Guide 而MainWindow.xib.designer.cs文件则是MonoDevelop根据xib文件中的标记所自动创建的C#代码,在绝大部分情况下我们不会去修改它。
  MonoMac使用Xcode的模式构建UI应用,Xcode使用MVC模型。XIB文件中包含UI和你的代码,也就是View。你的控制器和模型用.NET来写,也就是你必须使用Xcode来构建UI,因此必须安装Xcode。
  使用Interface Builder进行界面的布局,在MonoDevelop的项目上双击MainWindow.xib文件,便会打开Interface Builder。我
的使用过程中却发生这样的一件事,无论怎么双击也打不开Interface
Builder,开始以为是MonoDevelop的问题,就使用Xcode创建一个项目,也是一样的问题,最后是通过下面的方法解决的:通过
Finder找到Developer\Applications\Interface Builder 先运行Interface
Builder,就可以了。
  下图有4个窗口,左为Library窗口(近似于VS中的Toolbox),可以通过拖拽方式将控件加入到窗口里去;中间上方是可视化的UI编辑
器,下方则是对象管理器,显示了界面中定义的对象;右侧便是用来修改属性的Inspector窗口(近似于VS中的Properties窗口):
DSC0006.png
  在Library里找到NSButton,把它拖到中间的UI 编辑器窗口上,修改“Button”为“点击我”:
DSC0007.png
  下面添加一个NSTextField,方法和NSButton类似,我们要做的一件事就是按下按钮的时候,修改TextField的文本显示:
DSC0008.png
  下一步是建立UI和控制器之间的接口,首先是一个更新文本的属性,然后是通过一个事件 控制按钮的点击,控制器来我们使用C#代码进行编写。到Library找到MainWindowController
  并在下方下拉框中选取Outlets,并使用下方加号添加一个id,修改为NSTextField:
DSC0009.png
  下一步是建立label和NSTextField之间的映射,这是个比较有趣的操作。回到MainWindow.xib窗口,选中“File’s
owner”,在属性窗口中选择第五个,一个向右的箭头按钮。再将label右侧的小圆点拖动至NSTextField,当你释放鼠标你要看你
NSTextField标签所联系在一起:
DSC00010.png
  快完成了。下一步是在Interface builder建立一个按钮点击事件。
到Library的窗口。确定它仍然显示MainWindowController。选取Action。点击“+”和增加buttonClicked
类型为 NSButton。在属性窗口中,您应该看到一个新收到行动称为buttonClicked。把它和在画布上的按钮按照标签相同的方法建立关联。

DSC00011.png
  最后一步是保存我们的界面修改结果,这一步很重要哦,因为MonoDevelop是根据xib的内容,自动生成了相关的C#代码。
  现在我们回到MonoDevelop项目中,将下面的代码加入到MainWindow.Controller.cs文件。关键是添加一个方法——buttonClicked,也需要NSButton。程序就会按钮点击的时候触发请求该这个方法:





int count = 0;  
         
partial void buttonClicked(NSButton sender)  
{  

label.StringValue = string.Format("Button clicked {0} times.", ++count);  

}
  此时可以选择菜单Run - Run,或直接使用快捷键Command(即Win键) + Alt + Enter便会编译项目,这样你就可以看到这个程序运行起来了。
  

  来源:http://www.cnblogs.com/shanyou/archive/2011/01/28/monomac.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-158121-1-1.html 上篇帖子: Mac OS X 配置环境变量 下篇帖子: How-to: Understanding Mac OS X Open Directory
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表