解壓後,根目錄下有readfirst.html檔案,裡面說明了該開源版本裡包含的功能清單:
泛型的實作;
輕量級的代碼生成;
委托的實作;
反射;
裝配件(Assembly)的中繼資料格式;
匿名函數和委托;
.NET基本類庫(BCL);
編譯和運作代碼
要編譯clr源碼的話,需要滿足下面條件:
Microsoft Visual Studio 2005專業版以上,請使用預設安裝,避免在編譯的時候各種找不到檔案的情況;
Perl。
另外,還有一個準備步驟,這個問題在中文版的Windows系統中都會遇到,由于Rotor中部分源代碼以ANSI字元存放,其中中含有在936 Code Page,也就是Simplified Chinese GBK擴充字元集下無法解析的字元,在Build的時候VC編譯器CL會報warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss。同時在Build的時候由于打開了/WX開關,任何warning都會被當作是error而直接導緻部分編譯失敗。解決方法有:
把全部有問題的源代碼轉換成Unicode編碼;
更改系統目前的區域設定(Locale)為英文
一般來說改系統的Locale最合适。在“控制台”中“日期、時間、語言和區域設定”中的“區域和語言選項”的“進階”頁中修改“非Unicode程式的語言”的選項為“英文(美國)” ,重新開機即可。
在編譯過程中,需要将幾個程式加入PATH路徑,以便編譯程式能找到它們:
将Perl的路徑包含進來,如:C:\Perl\bin;
安裝好上面的軟體并将sscli源碼解壓之後,打開“Visual Studio 2005 Command Prompt”視窗,切換到sscli的根目錄,下面假設根目錄路徑是:c:\sscli。依次執行下面的指令:
<code>cd /d c:sscli</code>
<code>rem 設定目前編譯和運作環境為調試環境</code>
<code>env debug</code>
<code>rem 編譯所有的程式</code>
<code>buildall</code>
編譯成功之後,寫一個簡單的C#檔案,如下表:
<code>using</code> <code>System;</code>
<code>public</code> <code>class</code> <code>Hello</code>
<code>{</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>Main()</code>
<code> </code><code>{</code>
<code> </code><code>Console.WriteLine(</code><code>"Hello, sscli"</code><code>);</code>
<code> </code><code>}</code>
<code>}</code>
在編譯CLR源碼的控制台運作下面的指令編譯和執行C#程式(前面執行的 <code>env debug</code>指令,已經自動設定好PATH環境變量,C#編譯器csc.exe程式指向的是我們編譯好的程式):
編譯:csc test.cs
運作程式:clix test.exe
注意
盡量使用英文原版的Windows XP進行編譯,或者按前所述改成英文的區域設定;
不要使用VS 2005以上的IDE編譯,我曾經用VS 2008編譯成功過,但寫這篇文章的時候又碰到很多編譯錯誤,為了省事的話,盡量用VS 2005編譯;
需要确認VS 2005安裝好以後,有“C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK”這個檔案夾,在編譯的時候,需要用到裡面的頭檔案和庫檔案。
本文轉自 donjuan 部落格園部落格,原文連結: http://www.cnblogs.com/killmyday/p/4278673.html ,如需轉載請自行聯系原作者