SharpDevelop下编译及运行Target Framework为Mono的程序
2009-11-11 16:40
429 查看
就是想在SharpDevelop能将程序编译成Mono平台,然后用Mono运行时运行起来。整个过程是这样滴:
第一步:在SharpDevelop 下安装Mono插件
1. 确保Mono和SharpDevelop 都正确安装;
2. 解压SharpDevelop 的源码压缩包,然后将源码包底下的Samples文件夹拷贝到SharpDevelop的安装目录下的AddIns同级目录;
3. 在SharpDevelop中打开Samples/Mono/Mono.AddIn.sln,切换成Release(最好),然后编译。编译通过后插件会自动安装到插件管理目录下;
4. 重新启动SharpDevelop,这样我们就能在新建项目里看到C#和VB.net下都出现了Mono工程,安装成功!
第二步:改变Target Framework 为Mono 2.0
本来在SharpDevelop中的工程设置中的Target Framework 可选Mono的(效果如下图)
可是SharpDevelop 3.0 版以后去掉了对Mono平台的支持,官方解释如下:
The decision to "relegate" Mono from production to sample status has been based on multiple factors. For one, we only support basic compilation for Mono, no debugger nor any kind of visual designers (like GTK#). We got lots of support questions regarding these, and the honest answer had to be "we won't support that, sorry". Then in December Miguel announced that MonoDevelop will come to Windows (MonoDevelop is a fork of SharpDevelop), which meant that an IDE would come to Windows that fully supports all the things in Mono we don't have.
That's why we decided to make Mono an addin for people who know how to deal with source code, all the features are still there. And now that it is separate, it also makes a great sample addin because of the deepness of integration with low-level features of SharpDevelop.
所以,如果非要在SharpDevelop里编译Mono为目标平台的工程,就需要在Project文件里改动2处:
1) <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{3AF00322-0172-45A8-B233-9F7F17DE344E}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Exe</OutputType>
<RootNamespace>Test</RootNamespace>
<AssemblyName>Test</AssemblyName>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
</PropertyGroup>
2)将<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
替换为<Import Project="$(MonoBuildTasksPath)\Mono.Build.CSharp.targets" />
这样就能保证编译出来的代码是Mono为目标平台的了。
第三步:用Mono的Runtime运行该程序
需要照下面这么改动:
只有经过这三步,一个C#或者VB.net程序就能在SharpDevelop里以Mono为平台运行了。
写完了这些介绍步骤,觉得自己有点邪恶,人家官方都说了MonoDevelop已经能在windows下运行了,并且他们即使支持也只是支持部分功能且不支持调试,意思是劝大家去用MonoDevelop吧,SharpDevelop还是专注于Win平台。干嘛自己非折腾SharpDevelop呢。
其实呀,我也是后来才知道有这个官方说明的,开始也一直纳闷为啥Target Framework里的Mono没了呢,那么多书及文章里都提到那么做的。所以呢,可能这篇文章更大的意义是告诉大家不用折腾了,还是使MonoDevelop吧。况且,我想用的Boo语言,在SharpDevelop里不能编译成Mono平台,貌似这个编译器还没出。
但是用MonoDevelop也不很爽,因为它天生是给Linux玩的,风格习惯都是Linux,对我这样玩惯了Win的人还是有点不适应。另外目前的2.2版本在Win下运行感觉有点不利索。不过我已经找到monodevelop-boo-2.1.0.tar.bz2了,这样在monodevelop下就能玩Boo了。可是这是Linux下的。。。
所以,目前正在下载Ubantu 9.10。本来有个 Ubantu 8.1了,可是在VMware 6.5下安装后死活启动不起来,没办法下个新版本吧。
折腾。。。
希望国内有研究这些开源软件的人一起来讨论,折腾,折腾,讨论。。。
第一步:在SharpDevelop 下安装Mono插件
1. 确保Mono和SharpDevelop 都正确安装;
2. 解压SharpDevelop 的源码压缩包,然后将源码包底下的Samples文件夹拷贝到SharpDevelop的安装目录下的AddIns同级目录;
3. 在SharpDevelop中打开Samples/Mono/Mono.AddIn.sln,切换成Release(最好),然后编译。编译通过后插件会自动安装到插件管理目录下;
4. 重新启动SharpDevelop,这样我们就能在新建项目里看到C#和VB.net下都出现了Mono工程,安装成功!
第二步:改变Target Framework 为Mono 2.0
本来在SharpDevelop中的工程设置中的Target Framework 可选Mono的(效果如下图)
可是SharpDevelop 3.0 版以后去掉了对Mono平台的支持,官方解释如下:
The decision to "relegate" Mono from production to sample status has been based on multiple factors. For one, we only support basic compilation for Mono, no debugger nor any kind of visual designers (like GTK#). We got lots of support questions regarding these, and the honest answer had to be "we won't support that, sorry". Then in December Miguel announced that MonoDevelop will come to Windows (MonoDevelop is a fork of SharpDevelop), which meant that an IDE would come to Windows that fully supports all the things in Mono we don't have.
That's why we decided to make Mono an addin for people who know how to deal with source code, all the features are still there. And now that it is separate, it also makes a great sample addin because of the deepness of integration with low-level features of SharpDevelop.
所以,如果非要在SharpDevelop里编译Mono为目标平台的工程,就需要在Project文件里改动2处:
1) <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{3AF00322-0172-45A8-B233-9F7F17DE344E}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Exe</OutputType>
<RootNamespace>Test</RootNamespace>
<AssemblyName>Test</AssemblyName>
<MonoTargetFrameworkVersion>v2.0</MonoTargetFrameworkVersion>
</PropertyGroup>
2)将<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
替换为<Import Project="$(MonoBuildTasksPath)\Mono.Build.CSharp.targets" />
这样就能保证编译出来的代码是Mono为目标平台的了。
第三步:用Mono的Runtime运行该程序
需要照下面这么改动:
只有经过这三步,一个C#或者VB.net程序就能在SharpDevelop里以Mono为平台运行了。
写完了这些介绍步骤,觉得自己有点邪恶,人家官方都说了MonoDevelop已经能在windows下运行了,并且他们即使支持也只是支持部分功能且不支持调试,意思是劝大家去用MonoDevelop吧,SharpDevelop还是专注于Win平台。干嘛自己非折腾SharpDevelop呢。
其实呀,我也是后来才知道有这个官方说明的,开始也一直纳闷为啥Target Framework里的Mono没了呢,那么多书及文章里都提到那么做的。所以呢,可能这篇文章更大的意义是告诉大家不用折腾了,还是使MonoDevelop吧。况且,我想用的Boo语言,在SharpDevelop里不能编译成Mono平台,貌似这个编译器还没出。
但是用MonoDevelop也不很爽,因为它天生是给Linux玩的,风格习惯都是Linux,对我这样玩惯了Win的人还是有点不适应。另外目前的2.2版本在Win下运行感觉有点不利索。不过我已经找到monodevelop-boo-2.1.0.tar.bz2了,这样在monodevelop下就能玩Boo了。可是这是Linux下的。。。
所以,目前正在下载Ubantu 9.10。本来有个 Ubantu 8.1了,可是在VMware 6.5下安装后死活启动不起来,没办法下个新版本吧。
折腾。。。
希望国内有研究这些开源软件的人一起来讨论,折腾,折腾,讨论。。。
相关文章推荐
- Framework 3.5编译的程序在4.0下运行
- VS2005编译VC++非托管代码(无需依赖.Net Framework即可运行)
- sublime text3编译运行C,Java程序的一些配置
- java程序编译和运行
- 用Notepad++中的NppExec插件编译运行Java小程序
- (一)OpenCV学习笔记——Linux下编译运行opencv程序
- (Ubantu)使用gcc编译一个程序a.c成a.out,输入a.out运行,提示bash:a.out:command not found,怎么回事
- 两个小问题解决记录:XCode中多Target时CFBundleDisplayName的多语言本地化;用C++写socket程序时编译错误说read和write找不到
- xcode 编译程序运行,总是提示输入用户名和密码的解决方法
- .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
- 高通snapdragon平台下编译生成运行Android可执行程序小白教程
- CMake编译运行OpenCV程序_debug总结
- VC中编译、运行程序的小知识点
- 抛砖引玉:在Editplus下配置编译和运行java程序的快捷方式
- 让你的电脑不安framework也能运行.net程序
- 让.Net 程序脱离.net framework框架运行
- 【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 改善C#程序的50种方法 条款2:运行时常量(readonly)优于编译时常量(const)
- 程序在eclipse运行正常,但是打包上传到服务器上却报“java.lang.reflection.invocationTargetException”
- 使用VC+VA编写/编译/运行/调试linux程序