利用CSC編譯器生成WPF的 Hello World程序


     有研究了三個多小時,終於搞定了,寫完博客一定要去休息會。。。。

  csc,相信有一部分人肯定了解或者用過。csc,是C#的編譯器,通過一些的參數達到編譯CS文件為可執行文件的目的。

      百度上有一些csc的內容,但並沒有關於csc編譯器編譯生成WPF應用的,因此特寫此文,並非重復寫很多遍的東西。

     使用csc編譯WPF程序,目的有二:

      1.有助於提高對WPF的理解,這與用WPF模板新建一個WPF項目是截然不同的,當你利用模板新建一個WPF程序,Application和Window窗口早就給你生成了,雖說方便,但最后的結果就是你連WPF是怎么運行的都不知道。

     2.當你在未安裝VS但安裝了.Net的計算機中需要編程的時候,可以使用此方法。(這只是個簡單的例子,其他的東西就靠各位繼續研究了)

      使用CSC ,首先是要添加csc.exe文件路徑(位於你的系統.Net任何一個版本的安裝目錄:如:C:\Windows\Microsoft.NET\Framework\v4.0.30319)到系統環境變量的path路徑中,只要學過Java的應該都會配置的,不會的要去百度。

     配置完成之后,(重新)打開命令提示符,定位到你將要編譯程序的那個文件夾。要說編譯C#程序,定要有cs文件。所以就新建一個文本文件並命名為1.cs,用文本編輯器打開它(記事本也湊合),在其中輸入C#代碼,然后在命令提示符中輸入:

     csc 1.css

如果沒有錯誤,就會在你編譯程序的文件夾生成exe可執行文件。假如我們在C#代碼中這樣輸入

using System;
class Program
{
static void Main()
{
    Console.WriteLine("Hello World"); 
    Console.Read();
}
}

用css編譯器編譯它,會生成一個exe文件,打開它,會發現出現一個控制台應用程序並輸出了 Hello World,這代表着我們的程序編譯成功了。

  這只是讓大家簡單的了解一下csc編譯器。在講用csc編譯WPF程序之前,先得說些csc編譯器基本語法參數:

   

/targert      生成的文件類型,具體見下:

/target:exe

創建 .exe 文件。

/target:library

創建代碼庫。

/target:module

創建模塊。

/target:winexe

創建 Windows 程序。

/target:winmdobj

若要創建一個中間的.winmdobj 文件。

例如輸入 csc /target:exe 1.cs,就生成了一個exe控制台程序

由於默認選擇是 /target:exe,因此上邊的控制台程序未加任何參數就編譯成功了,若是編譯WPF程序,應該要選擇/target:winexe

 

/reference (/r )  引用程序集文件

 

例如輸入 csc /r:System.dll /target:exe 1.cs ,就加載引用了System.dll

 

目前用到的就是以上兩個,其他的請查閱msdn中的內容或者百度,現在開始構造我們的WPF程序。

眾所周知,WPF有幾個基本程序集,分別是PresentationCore.dll,PresentationFramework.dll和WindowsBase.dll,另外還要引用System.Xaml.dll(后一個與csc編譯器位於同一個文件夾,前三個位於子文件夾WPF下),因此在編譯的時候應當引用它們。

 

編寫我們的C#代碼:

 

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
public partial class App:Application
{
    [STAThread]    
        //表示單一線程單元
    public static void Main()    //主函數入口
    {
        App app=new App();      //創建一個繼承自Application的App對象
        app.Run();             //運行它

    }
    Grid grid; //表示窗口中的Grid
    Window w;   //表示一個Window窗口
    protected override void OnStartup(StartupEventArgs e)    //App啟動時觸發
    {
        base.OnStartup(e);
        w=new Window();  //實例化窗口
        grid=new Grid();  //實例化Grid
        w.Title="Hello World Application";
        w.Content=grid;  //設置Window窗口的內容為一個Grid
        w.Width=300;
        w.Height=200;


        w.Loaded+=MainWindow_Loaded;
            
        w.Show();  //顯示窗口
    }
    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        TextBlock tb=new TextBlock(); //創建一個TextBlock控件
        tb.Text="Hello World";  //設置文本
        grid.Children.Add(tb);  //將其添加到Grid中
               TranslateTransform tt=new TranslateTransform();   //創建一個平移變換對象
                tb.RenderTransform=tt;//關聯到TextBlock控件
                tb.RenderTransformOrigin=new Point(0.5,0.5);  //設置變換點


            DoubleAnimation da = new DoubleAnimation();  //創建動畫
                da.To = w.ActualWidth - tb.ActualWidth;      //設置動畫的To屬性
                da.Duration = TimeSpan.FromSeconds(10);     //設置動畫的持續時間
                da.RepeatBehavior = RepeatBehavior.Forever;  //反復執行動畫
                Storyboard.SetTarget(da, tb);   
                Storyboard.SetTargetProperty(da,new PropertyPath("RenderTransform.X"));
                Storyboard story = new Storyboard();
                story.Children.Add(da);  
                story.Begin();  //開始動畫
        
    }
} 

 

 代碼中加入了WPF中標志的動畫,為了避免你不知道它是WPF程序

開始編譯代碼,在命令提示符中輸入:

csc /target:winexe /r “WPF\PresentationCore.dll”, “WPF\PresentationFramework.dll”,”WPF\WindowsBase.dll”,” System.Xaml.dll” 1.cs

 

運行它,如果代碼沒什么問題,將會編譯生成WPF應用程序。不知道大家有沒有覺得這個編譯命令是不是有點長,有點不利於輸入呢?有沒有簡單的方法,比如將引用的所有程序集名單寫入一個配置文件中?答案是可以的,但不是隨便寫進一個配置文件中就可以。

     如果你足夠細心的話,你會發現上邊的控制台程序並沒有引用程序集文件的dll就直接using了,難道編譯器自動尋找並引用了?當然不是,在csc所在的文件夾中,還有一個文件,名為csc.rsp,用記事本打開它,其中有許多的程序集引用,包含了大部分常用的程序集,但是並沒有WPF相關的程序集,所以我們將WPF的幾個核心程序集(PresentationCore.dll,PresentationFramework.dll,WindowsBase.dll)添加到csc.rsp文件中,具體怎么添加,相信各位打開csc.rsp就知道了,路徑和命令提示符中輸入的路徑一樣。(值得注意的是,Windows Vista以上的操作系統可能存在管理員權限問題,需要把此文件復制到別處編輯好再覆蓋原來的文件即可,若還不行,則添加你所使用用戶的修改權限)

 具體添加到csc.rsp的內容:

/r:"WPF\PresentationCore.dll"
/r:"WPF\PresentationFramework.dll"
/r:"WPF\WindowsBase.dll"
/r:"System.Xaml.dll"

 

 配置完成以后,可就是一勞永逸,因此在命令提示符中直接輸入

csc /target:winexe 1.cs

點回車,我們的WPF程序就編譯完成了,運行一下,看看是否成功了呢?

 

這篇文章花了我很多的時間,希望對大家有所幫助,如果覺得寫得不好,請在評論中提出來,我將撤出首頁,謝謝合作!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM