<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>色胚子部落 &#187; 跨平台</title>
	<atom:link href="http://blog.colorbase.tw/tag/%e8%b7%a8%e5%b9%b3%e5%8f%b0/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.colorbase.tw</link>
	<description>訊息多變的時代裡，需要多學習多思考</description>
	<lastBuildDate>Mon, 15 Aug 2011 03:29:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>.Net Framework透過Mono跨平台的一些技巧</title>
		<link>http://blog.colorbase.tw/programming/529</link>
		<comments>http://blog.colorbase.tw/programming/529#comments</comments>
		<pubDate>Sun, 21 Dec 2008 09:45:32 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[程式設計]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[SharpDevelop]]></category>
		<category><![CDATA[跨平台]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=529</guid>
		<description><![CDATA[因為有了Mono讓原本習慣開發Windows程式的人也可以輕鬆的寫出跨平台的程式，轉移的痛苦度也降低了很多，在此分享幾個.Net Framework透過Mono跨平台的技巧。
 讓SharpDevelop支援Mono

要開發跨平台的程式，當然要讓開發工具支援跨平台的功臣Mono啦。
1. 在 Project &#62;&#62; Project Options 中選擇「Debug」頁籤。
2. 設定Start Action，設定編譯後的執行模式，預設為Start project，亦即使用預設的Debug環境執行，若要以Mono執行，則必須更改為「Start external program」，並指定Mono for Windows的Console執行檔路徑。
3. 設定啟動參數為「&#34;${TargetPath}&#34;」，此代表編譯好的.Net程式執行檔路徑
4. 設定工作目錄為「&#34;${TargetDir}&#34;」，此代表編譯好的.Net程式執行檔所在目錄。
設定好之後按下F5編譯並執行，即會以Mono執行程式了，設定如下圖：

判斷目前正執行的平台
雖然跨平台程式應該與平台無關，但如果在程式中針對平台特性加以優化將會使軟體的功能更加貼近各種平台。
判斷跨平台的程式碼如下：

string SysString = Environment.OSVersion.Platform.ToString();
string SysId = ((int)Environment.OSVersion.Platform).ToString();

switch(Environment.OSVersion.Platform)
{
	case PlatformID.Unix:
		MessageBox.Show("目前執行在 Unix-Like平台");
		break;
	case PlatformID.Win32NT:
	case PlatformID.Win32S:
	case PlatformID.Win32Windows:
	case PlatformID.WinCE:
		MessageBox.Show("目前執行在 Windows 平台");
		break;
}

MessageBox.Show("目前的平台是：" + SysString + " , 平台ID：" + SysId);

針對目前執行系統取得文字檔的換行字元
由於Unix-Like的作業系統文字檔的換行是\n，而Windows則是\r\n，因此可以透過
System.Environment.NewLine 來取得目前系統的換行字元
如果非要呼叫系統API
有些時候，如果非得使用Windows API來達成在Windows下的某些特殊功能，如果使用內嵌的方式呼叫Windows API，在Linux底下根本無法透過mono執行，因為內嵌式的呼叫在程式載入時就會一併載入所需的.dll，此時可以將這些功能寫成一個DLL，再利用前面所提到的方法判斷目前作業系統，如果是在Windows底下，就利用動態調用DLL的方式來呼叫這些API，反之如果不是在Window底下，則進行另外的處理。
以下示範將Window API包裝在DLL裡面，並依據目前執行的作業系統決定是否載入外部DLL並利用其提供的方法，呼叫Windows API來達成所需的功能。
將以下編譯成.dll檔

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace ClassLibrary
{
	public class MyClass
	{
		[DllImport("shell32.dll", CharSet = CharSet.Auto)]
  ...]]></description>
			<content:encoded><![CDATA[<p>因為有了Mono讓原本習慣開發Windows程式的人也可以輕鬆的寫出跨平台的程式，轉移的痛苦度也降低了很多，在此分享幾個.Net Framework透過Mono跨平台的技巧。</p>
<p> <span id="more-529"></span><span style="color: #008080"><strong>讓SharpDevelop支援Mono</strong></span>
</p>
<p>要開發跨平台的程式，當然要讓開發工具支援跨平台的功臣Mono啦。</p>
<p>1. 在 Project &gt;&gt; Project Options 中選擇「Debug」頁籤。</p>
<p>2. 設定Start Action，設定編譯後的執行模式，預設為Start project，亦即使用預設的Debug環境執行，若要以Mono執行，則必須更改為「Start external program」，並指定Mono for Windows的Console執行檔路徑。</p>
<p>3. 設定啟動參數為「&quot;${TargetPath}&quot;」，此代表編譯好的.Net程式執行檔路徑</p>
<p>4. 設定工作目錄為「&quot;${TargetDir}&quot;」，此代表編譯好的.Net程式執行檔所在目錄。</p>
<p>設定好之後按下F5編譯並執行，即會以Mono執行程式了，設定如下圖：</p>
<p><a class="thickbox" href="http://blog/wp-content/uploads/2008/12/usemonoinsharpdevelop.png"><img class="alignnone size-medium wp-image-530" title="usemonoinsharpdevelop" alt="" src="http://blog.colorbase.tw/wp-content/uploads/2008/12/usemonoinsharpdevelop-350x231.png" width="350" height="231" /></a></p>
<p><span style="color: #008080"><strong>判斷目前正執行的平台</strong></span></p>
<p>雖然跨平台程式應該與平台無關，但如果在程式中針對平台特性加以優化將會使軟體的功能更加貼近各種平台。</p>
<p>判斷跨平台的程式碼如下：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4b681083-dcd1-4f75-8bc8-41886a1edf8c" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter">string SysString = Environment.OSVersion.Platform.ToString();
string SysId = ((int)Environment.OSVersion.Platform).ToString();

switch(Environment.OSVersion.Platform)
{
	case PlatformID.Unix:
		MessageBox.Show("目前執行在 Unix-Like平台");
		break;
	case PlatformID.Win32NT:
	case PlatformID.Win32S:
	case PlatformID.Win32Windows:
	case PlatformID.WinCE:
		MessageBox.Show("目前執行在 Windows 平台");
		break;
}

MessageBox.Show("目前的平台是：" + SysString + " , 平台ID：" + SysId);</pre>
</div>
<p><span style="color: #008080"><strong>針對目前執行系統取得文字檔的換行字元</strong></span></p>
<p>由於Unix-Like的作業系統文字檔的換行是\n，而Windows則是\r\n，因此可以透過</p>
<p>System.Environment.NewLine 來取得目前系統的換行字元</p>
<p><span style="color: #008080"><strong>如果非要呼叫系統API</strong></span></p>
<p>有些時候，如果非得使用Windows API來達成在Windows下的某些特殊功能，如果使用內嵌的方式呼叫Windows API，在Linux底下根本無法透過mono執行，因為內嵌式的呼叫在程式載入時就會一併載入所需的.dll，此時可以將這些功能寫成一個DLL，再利用前面所提到的方法判斷目前作業系統，如果是在Windows底下，就利用動態調用DLL的方式來呼叫這些API，反之如果不是在Window底下，則進行另外的處理。</p>
<p>以下示範將Window API包裝在DLL裡面，並依據目前執行的作業系統決定是否載入外部DLL並利用其提供的方法，呼叫Windows API來達成所需的功能。</p>
<p>將以下編譯成.dll檔</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4aab51ae-a94f-4766-ade6-10a7bac07497" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter">using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace ClassLibrary
{
	public class MyClass
	{
		[DllImport("shell32.dll", CharSet = CharSet.Auto)]
    	public static extern int ShellExecute( IntPtr hwnd, String lpOperation, String lpFile,  String lpParameters,  String lpDirectory, int nShowCmd);

		public MyClass()
		{
			//其他處理
		}

		//用一個方法成員包裝某個Windows API
		public void WinApiShellExecute(Form caller,string filePath)
		{
			ShellExecute(caller.Handle,"open",filePath,null,null,5);
		}
	}
}
</pre>
</div>
<p>呼叫時，使用以下方式：</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7f530942-4266-4c29-a545-9b70a820b955" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter">using System.Reflection;

if(Environment.OSVersion.Platform != PlatformID.Unix)
{ // Windows系統，載入DLL，並藉由DLL裡面的方法呼叫Windows API
	string dllPath = "ClassLibrary.dll";//DLL路徑
	Assembly assLib = Assembly.LoadFrom(dllPath);//動態載入DLL
	//取得Namespace為ClassLibrary的MyClass Type
	Type clsType = assLib.GetType("ClassLibrary.MyClass");
	Object MyClass = Activator.CreateInstance(clsType,new object[]{});//建立Class實體
	MethodInfo mApiInfo=type.GetMethod("WinApiShellExecute");//取得Method成員
	mApiInfo.Invoke(MyClass,new object[]{this,"notepad.exe"});//呼叫包裝API的方法成員
}
else
{ //Unix系統
	//進行其他處理....
}
</pre>
</div>
<p>PS. 這只是範例，如果只是要呼叫外部程式，.Net Framework有更好的作法，不需呼叫Windows API。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/programming/529/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用MoMA分析.Net程式是否能透過Mono跨平台</title>
		<link>http://blog.colorbase.tw/programming/519</link>
		<comments>http://blog.colorbase.tw/programming/519#comments</comments>
		<pubDate>Sun, 14 Dec 2008 01:27:15 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[程式設計]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[跨平台]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=519</guid>
		<description><![CDATA[Mono 官方提供了一個檢測.Net Framework開發的程式是否能透過Mono跨平台的檢測工具 Mono Migration Analyzer (MoMA)，這個工具可以幫忙偵測出.Net程式無法跨平台可能的潛在問題。

測試MoMA
為了這測試這個工具，我找來之前寫的小工具重複文字產生器來當實驗品。
1.首先下載 MoMA，因為MoMA是以.Net Framework寫的，因此如果已經安裝.Net Framework的話，解壓縮後即可執行。
2. 在選擇檔案那一頁中，按下「+」鈕，挑選要進行分析的檔案，由於重複文字產生器並沒有用到其他額外的.dll，只有簡單的主執行檔，因此只將StrTemplate.exe選進來。

3.選完檔案之後，按Next即可進行分析。
4.在分析概要頁中顯示找到1個平台請求呼叫的潛藏問題。

5.到底是什麼原因造成的錯誤呢？按下View Detail Report顯示詳細的報告。
6.詳細報告中指出問題出在StrTemplate.exe中的Label2Click呼叫了來自shell32.dll的ShellExecute。

7.結果很明顯，因為跨平台的程式應該與系統無關才對，但我卻在關於我中呼叫了ShellExecute這個Windows API來開啟網址，因此當然無法跨平台囉。
相關連結

Mono Migration Analyzer (MoMA)
Mono

]]></description>
			<content:encoded><![CDATA[<p>Mono 官方提供了一個檢測.Net Framework開發的程式是否能透過Mono跨平台的檢測工具 Mono Migration Analyzer (MoMA)，這個工具可以幫忙偵測出.Net程式無法跨平台可能的潛在問題。</p>
<p><span id="more-519"></span></p>
<p><strong><span style="color: #008080;">測試MoMA</span></strong></p>
<p>為了這測試這個工具，我找來之前寫的小工具<a href="http://blog.colorbase.tw/portfolio/287" target="_blank">重複文字產生器</a>來當實驗品。</p>
<p>1.首先<a href="http://mono-project.com/MoMA" target="_blank">下載 MoMA</a>，因為MoMA是以.Net Framework寫的，因此如果已經安裝.Net Framework的話，解壓縮後即可執行。</p>
<p>2. 在選擇檔案那一頁中，按下「+」鈕，挑選要進行分析的檔案，由於重複文字產生器並沒有用到其他額外的.dll，只有簡單的主執行檔，因此只將StrTemplate.exe選進來。</p>
<p><a href="http://blog.colorbase.tw/wp-content/uploads/2008/12/selectassemblys.png"><img class="alignnone size-medium wp-image-523" title="selectassemblys" src="http://blog.colorbase.tw/wp-content/uploads/2008/12/selectassemblys-300x208.png" alt="" width="300" height="208" /></a></p>
<p>3.選完檔案之後，按Next即可進行分析。</p>
<p>4.在分析概要頁中顯示找到1個平台請求呼叫的潛藏問題。</p>
<p><a href="../wp-content/uploads/2008/12/analysis-summary.png"><img title="analysis-summary" src="../wp-content/uploads/2008/12/analysis-summary-300x208.png" alt="" width="300" height="208" /></a></p>
<p>5.到底是什麼原因造成的錯誤呢？按下View Detail Report顯示詳細的報告。</p>
<p>6.詳細報告中指出問題出在StrTemplate.exe中的Label2Click呼叫了來自shell32.dll的ShellExecute。</p>
<p><a href="../wp-content/uploads/2008/12/moma-scan-results.png"><img title="moma-scan-results" src="../wp-content/uploads/2008/12/moma-scan-results-300x164.png" alt="" width="300" height="164" /></a></p>
<p>7.結果很明顯，因為跨平台的程式應該與系統無關才對，但我卻在關於我中呼叫了ShellExecute這個Windows API來開啟網址，因此當然無法跨平台囉。</p>
<p>相關連結</p>
<ul>
<li><a href="http://mono-project.com/MoMA" target="_blank">Mono Migration Analyzer (MoMA)</a></li>
<li><a href="http://mono-project.com/" target="_blank">Mono</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/programming/519/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在Ubuntu上執行.Net開發的程式</title>
		<link>http://blog.colorbase.tw/programming/516</link>
		<comments>http://blog.colorbase.tw/programming/516#comments</comments>
		<pubDate>Fri, 12 Dec 2008 06:15:41 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[程式設計]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[跨平台]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=516</guid>
		<description><![CDATA[今天看了 Installing and using mono on Ubuntu 這篇文章之後，測試了一下在Ubuntu中執行.Net的程式
該篇文章對Mono on Ubuntu 講的非常詳細，其中包括如何在Ubuntu中透過mono附帶的編譯器，編譯.Net程式
讓Ubuntu支援.Net WindowForms程式
該文作者是在Ubuntu底下，利用Mono的編譯器進行編譯，因此裝了許多的套件，但如果開發環境是在WIndows底下，而且覺得用命令列編譯太麻煩，其實只要安裝mono、libmono-winforms1.0-cil、libmono-winforms2.0-cil三個套件，就可以直接執行已經在Windows底下編譯好的.Net程式，因為在Windows有更好用的 MS Visual Studio跟SharpDevelop等RAD工具，確實可以省下很多麻煩。
Ubuntu中Mono的安裝指令為：
sudo apt-get install mono
sudo apt-get install libmono-winforms1.0-cil libmono-winforms2.0-cil
又或者使用Ubuntu的Synaptic套件管理程式來安裝更方便(用慣GUI介面的人 XD)
小小測試
我在SharpDevelop中使用C#寫了一些簡單的小東西來做測試，GUI的部份只使用最基本的WindowForms元件，編譯完成後，直接拿到Ubuntu底下，輸入：
mono 執行檔名.exe
該測試程式中使用了以下的.Net套件

System
System.Collections.Generic
System.Drawing
System.Windows.Forms
System.Net
System.Threading
System.Collections
System.Xml
System.IO
System.Text

執行結果，各個功能執行無誤，執行畫面如下：

如同該篇文章所說，Mono並無支援所有的WindowForms元件，後來又測試了使用ToolTip元件，發現無法執行，原因似乎是不支援氣泡提示。
結論
雖然很遺憾Mono仍尚未完全支援.Net所提供的套件，但是以目前支援的程度所能達到的應用，應該可以說數不完了。
相關連結

Installing and using mono on Ubuntu

]]></description>
			<content:encoded><![CDATA[<p>今天看了 <a href="http://www.builderau.com.au/program/dotnet/soa/Gallery-Installing-and-using-mono-on-Ubuntu/0,339028399,339279567,00.htm" target="_blank">Installing and using mono on Ubuntu</a> 這篇文章之後，測試了一下在Ubuntu中執行.Net的程式</p>
<p>該篇文章對Mono on Ubuntu 講的非常詳細，其中包括如何在Ubuntu中透過mono附帶的編譯器，編譯.Net程式<span id="more-516"></span></p>
<p><span style="color: #008080;"><strong>讓Ubuntu支援.Net WindowForms程式</strong></span></p>
<p>該文作者是在Ubuntu底下，利用Mono的編譯器進行編譯，因此裝了許多的套件，但如果開發環境是在WIndows底下，而且覺得用命令列編譯太麻煩，其實只要安裝mono、libmono-winforms1.0-cil、libmono-winforms2.0-cil三個套件，就可以直接執行已經在Windows底下編譯好的.Net程式，因為在Windows有更好用的 MS Visual Studio跟SharpDevelop等RAD工具，確實可以省下很多麻煩。</p>
<p>Ubuntu中Mono的安裝指令為：</p>
<blockquote><p>sudo apt-get install mono<br />
sudo apt-get install libmono-winforms1.0-cil libmono-winforms2.0-cil</p></blockquote>
<p>又或者使用Ubuntu的Synaptic套件管理程式來安裝更方便(用慣GUI介面的人 XD)</p>
<p><span style="color: #008080;"><strong>小小測試</strong></span></p>
<p>我在SharpDevelop中使用C#寫了一些簡單的小東西來做測試，GUI的部份只使用最基本的WindowForms元件，編譯完成後，直接拿到Ubuntu底下，輸入：</p>
<p>mono 執行檔名.exe</p>
<p>該測試程式中使用了以下的.Net套件</p>
<ul>
<li>System</li>
<li>System.Collections.Generic</li>
<li>System.Drawing</li>
<li>System.Windows.Forms</li>
<li>System.Net</li>
<li>System.Threading</li>
<li>System.Collections</li>
<li>System.Xml</li>
<li>System.IO</li>
<li>System.Text</li>
</ul>
<p>執行結果，各個功能執行無誤，執行畫面如下：</p>
<p><a class="thickbox" href="http://blog.colorbase.tw/wp-content/uploads/2008/12/csharponubuntu.png"><img class="alignnone size-medium wp-image-517" title="csharponubuntu" src="http://blog.colorbase.tw/wp-content/uploads/2008/12/csharponubuntu-330x350.png" alt="" width="330" height="350" /></a></p>
<p>如同該篇文章所說，Mono並無支援所有的WindowForms元件，後來又測試了使用ToolTip元件，發現無法執行，原因似乎是不支援氣泡提示。</p>
<p><span style="color: #008080;"><strong>結論</strong></span></p>
<p>雖然很遺憾Mono仍尚未完全支援.Net所提供的套件，但是以目前支援的程度所能達到的應用，應該可以說數不完了。</p>
<p><strong><span style="color: #008080;">相關連結</span></strong></p>
<ul>
<li><a href="http://www.builderau.com.au/program/dotnet/soa/Gallery-Installing-and-using-mono-on-Ubuntu/0,339028399,339279567,00.htm" target="_blank">Installing and using mono on Ubuntu</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/programming/516/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net Framework 跨平台初步參考</title>
		<link>http://blog.colorbase.tw/programming/512</link>
		<comments>http://blog.colorbase.tw/programming/512#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:56:23 +0000</pubDate>
		<dc:creator>阿育</dc:creator>
				<category><![CDATA[程式設計]]></category>
		<category><![CDATA[.net framework]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[MonoDevelop]]></category>
		<category><![CDATA[SharpDevelop]]></category>
		<category><![CDATA[跨平台]]></category>

		<guid isPermaLink="false">http://blog.colorbase.tw/?p=512</guid>
		<description><![CDATA[.Net Framework 這個由微軟開發的軟體開發/執行平臺，現在可真是越來越多人使用了，雖然.Net的運行架構跟Java非常相似，但是微軟似乎沒有直接提供其他作業系統的.Net Framework運行環境。
跨平台的.Net Framework -  Mono
幸好，有一個名為Mono的Open Source Project，實現了這個可能，Mono官方首頁斗大的標題寫著：Mono is a cross platform, open source .NET development framework.
這意謂著.Net開發的程式可以在Mono的架構之下運行於各種系統平台，換個方式說，只要Mono Framework能運行的系統平台，就能執行.Net所開發的應用程式，而Mono從2004年發展至今已經相當完善。
目前Mono能運行於以下作業系統：

Linux
Mac OS X, iPhone OS
Sun Solaris
BSD &#8211; OpenBSD, FreeBSD, NetBSD
Microsoft Windows
Nintendo Wii

Mono主要是為了.Net Framework能跨平台執行而開發的，因此它支援C#及VB.Net所開發的程式，但是Mono的貢獻不僅如此， Mono還照顧到了更多語言的使用者，甚至是腳本式的語言PHP、Javascript等都能開發Mono Framework的應用程式，讓 Write Once, Run Anywhere 不再是Java使用者的獨享的好處了，目前Mono支援的語言如下：

C#
Java
Boo
Nemerle
Visual Basic.NET
JavaScript
Oberon
PHP
Object Pascal
LUA
Cobra
Python
其他語言&#8230;Component Pascal、Delta Forth、DotLisp、#Smalltalk

透過Mono還能讓原本只能運行於IIS下的ASP.Net透過mod_mono運行於Apache中，用更直接的方式來說，透過Mono可以讓Linux所架設的伺服器也能夠執行ASP.Net的Web應用程式了。
.Net開發工具
開發.Net的應用程式，其實並不一定要使用官方所開發的工具，如果沒有那麼大的需求，或者學生、業餘玩家也有免費的RAD工具可以使用。
Windows平台：SharpDevelop
這是一套用.Net Framework所開發的RAD工具，與其他RAD一樣，支援拖拉點選的方式協助開發應用程式，擁有相當完善的開發功能，如：程式碼提示、元件拖拉、屬性編輯、Debug&#8230;.等等，支援的語言有C#, VB.NET , Boo，更重要的是它Free!

Linux平台：MonoDevelop
與SharpDevelop非常相似的RAD工具，事實上它就是以SharpDevelop為基礎所改寫、移植到Linux的一套RAD工具，一樣也是Free!

相關連結

Mono官方網站
mod_mono
SharpDevelop
MonoDevelop

以上，我剛接觸這些東西不久，對它們還不是很熟悉，若有謬誤歡迎指正，若有其他更好的東西，也歡迎留言分享
]]></description>
			<content:encoded><![CDATA[<p>.Net Framework 這個由微軟開發的軟體開發/執行平臺，現在可真是越來越多人使用了，雖然.Net的運行架構跟Java非常相似，但是微軟似乎沒有直接提供其他作業系統的.Net Framework運行環境。<span id="more-512"></span></p>
<p><span style="color: #008080;"><strong>跨平台的.Net Framework -  Mono</strong></span></p>
<p>幸好，有一個名為Mono的Open Source Project，實現了這個可能，<a href="http://mono-project.com/" target="_blank">Mono官方</a>首頁斗大的標題寫著：Mono is a cross platform, open source .NET development framework.</p>
<p>這意謂著.Net開發的程式可以在Mono的架構之下運行於各種系統平台，換個方式說，只要Mono Framework能運行的系統平台，就能執行.Net所開發的應用程式，而Mono從2004年發展至今已經相當完善。</p>
<p>目前Mono能運行於以下作業系統：</p>
<ul>
<li>Linux</li>
<li>Mac OS X, iPhone OS</li>
<li>Sun Solaris</li>
<li>BSD &#8211; OpenBSD, FreeBSD, NetBSD</li>
<li>Microsoft Windows</li>
<li>Nintendo Wii</li>
</ul>
<p>Mono主要是為了.Net Framework能跨平台執行而開發的，因此它支援C#及VB.Net所開發的程式，但是Mono的貢獻不僅如此， Mono還照顧到了更多語言的使用者，甚至是腳本式的語言PHP、Javascript等都能開發Mono Framework的應用程式，讓 Write Once, Run Anywhere 不再是Java使用者的獨享的好處了，目前Mono支援的語言如下：</p>
<ul>
<li>C#</li>
<li>Java</li>
<li>Boo</li>
<li>Nemerle</li>
<li>Visual Basic.NET</li>
<li>JavaScript</li>
<li>Oberon</li>
<li>PHP</li>
<li>Object Pascal</li>
<li>LUA</li>
<li>Cobra</li>
<li>Python</li>
<li>其他語言&#8230;Component Pascal、Delta Forth、DotLisp、#Smalltalk</li>
</ul>
<p>透過Mono還能讓原本只能運行於IIS下的ASP.Net透過<a href="http://www.mono-project.com/Mod_mono" target="_blank">mod_mono</a>運行於Apache中，用更直接的方式來說，透過Mono可以讓Linux所架設的伺服器也能夠執行ASP.Net的Web應用程式了。</p>
<p><span style="color: #008080;"><strong>.Net開發工具</strong></span></p>
<p>開發.Net的應用程式，其實並不一定要使用官方所開發的工具，如果沒有那麼大的需求，或者學生、業餘玩家也有免費的RAD工具可以使用。</p>
<p><strong>Windows平台</strong>：SharpDevelop</p>
<p>這是一套用.Net Framework所開發的RAD工具，與其他RAD一樣，支援拖拉點選的方式協助開發應用程式，擁有相當完善的開發功能，如：程式碼提示、元件拖拉、屬性編輯、Debug&#8230;.等等，支援的語言有C#, VB.NET , Boo，更重要的是它Free!</p>
<p><a class="thickbox" href="http://blog.colorbase.tw/wp-content/uploads/2008/12/sharpdevelop.png"><img class="alignnone size-medium wp-image-513" title="sharpdevelop" src="http://blog.colorbase.tw/wp-content/uploads/2008/12/sharpdevelop-350x266.png" alt="" width="350" height="266" /></a></p>
<p><strong>Linux平台</strong>：MonoDevelop</p>
<p>與SharpDevelop非常相似的RAD工具，事實上它就是以SharpDevelop為基礎所改寫、移植到Linux的一套RAD工具，一樣也是Free!</p>
<p><a class="thickbox" href="http://blog.colorbase.tw/wp-content/uploads/2008/12/monodevelop.png"><img class="alignnone size-medium wp-image-514" title="monodevelop" src="http://blog.colorbase.tw/wp-content/uploads/2008/12/monodevelop-350x242.png" alt="" width="350" height="242" /></a></p>
<p><strong><span style="color: #008080;">相關連結</span></strong></p>
<ul>
<li><a href="http://www.mono-project.com/" target="_blank">Mono官方網站</a></li>
<li><a href="http://www.mono-project.com/Mod_mono" target="_blank">mod_mono</a></li>
<li><a href="http://www.icsharpcode.net/OpenSource/SD/ " target="_blank">SharpDevelop</a></li>
<li><a href="http://monodevelop.com/" target="_blank">MonoDevelop</a></li>
</ul>
<p>以上，我剛接觸這些東西不久，對它們還不是很熟悉，若有謬誤歡迎指正，若有其他更好的東西，也歡迎留言分享</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.colorbase.tw/programming/512/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

