程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 如何用CSC.exe來編譯Visual C#的代碼文件,

如何用CSC.exe來編譯Visual C#的代碼文件,

編輯:C#入門知識

如何用CSC.exe來編譯Visual C#的代碼文件,


C#的編譯過程 

 

 

如何用CSC.exe來編譯Visual C#的代碼文件

 

  • Csc.exe 編譯器的位置路徑:C:\Windows\Microsoft.NET\Framework64\v4.0.30319
  • 如何編譯:

1.為了使用方便,你可以手動把上面的目錄添加到Path環境變量中去

2.用Csc.exe編譯HelloWorld.cs非常簡單,打開命令提示符,並切換到存放 HelloWorld.cs文件的目錄中,輸入下列行命令:

Csc /r:system.dll HelloWorld.cs

 

命令選項:

 

#

Option

Remark

1

@

這個選項是用來指定響應文件。響應文件是一種包含了許多編譯選項的文件。這些編譯選項將和源代碼文件一起由編譯器進行處理。一般來說此種響應文件是以文本文件形式出現。他的擴展名.rsp。在響應文件中是用#符號表示開始的注釋。

例:以下是一個響應文件resp1.rsp的內容:

# 這是一個簡單的響應文件,文件名稱為resp1.rsp

#使用方法: csc @resp1.rsp /target:exe /out:sample.exe sample.cs

此響應文件的作用就是把sample.cs文件編譯成sample.exe文件。如果在一次編譯中要指定多個響應文件,可以指定多個響應文件選項,如:@file1.rsp @file2.rsp

2

/? 與 /help

  

3

/addmodule

本選項是使編譯器搜集從用戶正在編譯的工程到可用文件中所有類型的信息。所有添加了/addmodule的模塊在運行時必須與輸出文件在同一目錄中。這就是說,用戶可以在編譯時指定任何目錄中的模塊,但在運行時這個模塊必須在應用程序目錄中。文件中不能包含匯編名單。例如:如果輸出文件用/taarget:module創建,其元數據可以用/addmodule導入。

例子:把二個模塊加入myProject.cs中 csc /addmodule:module1.dll;module2.dll myProject.cs

4

/baseaddress

本選項允許用戶指定載入DLL時的首選地址,這個首選地址可以是十進制、十六進制、八進制。DLL的缺省首選地址在.Net運行時設置。如果目標文件不是DLL文件,這個選項將被忽略。

例子:把myLibrary.cs編譯成DLL文件,並且當此DLL在.Net運行環境被載入時的地址是0x1111000:csc /baseaddres:0x1111000 /target:library myLibrary.cs

5

/bugreport

這個選項用來報告編譯時的錯誤信息。在報告中包含以下內容:

1).編譯中所有源代碼的一個拷貝

   2).在編譯中所有的編譯選項

   3).編譯信息,包括編譯器、運行時間、操作系統的版本信息

   4).編譯器輸出

   5).問題的描述

   6).如何解決問題的描述

例子:生成一個bugs.txt文件,並把錯誤報告放在文件裡面

csc /bugreport:bugs.txt Hello.cs

6

/checked

此選項指定不在檢驗或或者未檢驗關鍵字范圍內以及導致超出數據類型范圍的值的整數計算語句是否產生運行例外。具體的說就是,如果不在檢驗或者未檢驗關鍵字范圍內的整數計算語句產生的值在數據類型允許的范圍之外,並且在編譯中使用了/checked+(/checked),該語句就會在運行時產生例外,如果在編譯時使用了/checked-,在運行時該語句就不會產生例外。

例子:編譯myMath.cs,並且指定一個不在檢驗或者未檢驗關鍵字范圍內的整數計算語句(且其產生的值超出數據類型的范圍),將在運行時引起例外。

csc /checked+ myMath.cs

7

/codepage

如果用戶編譯的一個或者多個源代碼不使用計算機上的默認代碼頁,可以使用/codepage選項來指定希望使用的代碼頁。/codepage適用於編譯中所有的源代碼文件。

如果源代碼文件在計算機上的同一個代碼頁位置創建,或者源代碼文件用UNICODE或者UTF-8來創建,用戶就不需要使用/codepage了。

8

/debug

此選項是在調試時候使用的,當調試者啟用了這個選項來調試自己的程序,將會創建一個.pdb文件,並把各種調試信息寫到此文件裡。有兩選項來指定調試的類型:

  • /debug [+/-] :當選用/debug +就會把創建.pdb文件,並把調試信息存儲到裡面;/debug -是一個缺省設置,就是不產生任何調試信息。
  • /debug:[full/pdbonly] :當使用/debug:full就是創建缺省的調試信息,有點類似/debug+選項。/debug: pdbonly選項是創建.pdb文件,並且你只能使用源代碼調試在調試工具裡。

例子:編譯Hello.cs並且為Hello.cs創建調試信息

csc /debug+ HelloWorld.cs

9

/define

此選項在程序中定義了一個符號,他和在源程序中使用#define預處理程序指示功能相同,此符號保持已定義狀態,直到源文件中的#undefine指示符刪除定義或者編譯器已到達了文件末尾。你可以用/d簡寫來代替。

例子:下面是my.cs的源程序

using System;

public class myBuild

{

public static void Main()

{

#if (final)

Console.WriteLine("Final Build");

Console.ReadLine();

#else

Console.WriteLine("Trial Build");

Console.ReadLine();

#endif

   

}

}

如果用csc /define:final my.cs來編譯就會顯示"Final Build",如果沒有/define,編譯後執行就會顯示"Trial Build"。

10

/doc

文檔在當今已經變得愈來愈重要了,一個好的程序應該配有相當的文檔。如果你在寫程序的文檔中用的是"///"標識符來注釋。當你使用/doc選項來編譯時,你的所以注釋文檔將會自動的保留在一個XML文件中。

例子:以下是my.cs 的源程序

using System;

/// <summary>

/// This is a sample class that has some documentation

/// </summary>

public class myBuild

{

/// <summary>

/// Main entry point of the class

/// </summary>

public static void Main()

{

}

}

用下列編譯語句會產生my.xml文件,看看my.xml文件到底存儲了什麼東西。

Csc /doc:my.xml my.cs

11

/fullpaths

在默認情況下,編譯產生的錯誤或者警告都只會指明發現錯誤的文件名稱,加入此選項使得在編譯器產生錯誤或者警告的時候會顯示完整的路徑。你可以把上面的my.cs程序語法搞錯,再用 csc /fullpaths my.cs 和 csc my.cs分別編譯,看看錯誤提示有什麼不同。

12

/incremental

本選項主要是激活增量編譯器,這種編譯器只對上次編譯後發生改變的函數進行編譯。如果在編譯時候選用了/debug選項,調試信息的狀態存儲在相應的.pdb文件中。除此之外編譯時的信息都存儲在.incr文件中,此.incr文件的名稱為output_file_name.extension.incr。即如果輸出文件時out.exe,則此文件對應的incr文件是out.exe.incr文件。

例子:利用增量編譯器來編譯文件

csc /incremental /out:my.exe my.cs

如果編譯成功則會產生2個文件,分別是:my.exe和my.exe.incr。

13

/linkresource

這個選項就是在輸出文件中創建到.Net資源的鏈接。他的簡寫是/linkres。資源文件就是在那些在工程文件中使用到的所有的資源,像圖片、聲音等。這個選項只是對於資源文件建立鏈接,這樣有助於管理使用同一資源的程序,而不需要多個副本。此選項的具體語法如下:

/linkresource:filename,identifier,mimetype

其中:

   filename:是想建立鏈接的.Net的資源文件

   identifier(可選):資源的邏輯名稱,該名稱用於載入資源,默認名稱是文件名稱。

   mimetype(可選):是一個代表資源的媒介類型的字符串。默認為空。

例子:在文件中建立一個指向reso.resource的鏈接

csc /linkres:reso.resource myResource.cs

14

/main

當我們編譯二個或者多個擁有Main方法的Class,我們可以使用這個選項讓用戶指定最終的輸出文件中的使用那個Main的方法。

例子:編譯二個文件,但輸出文件中的Main方法來自Main1 Class

csc myMain1.cs myMain2.cs /main:Main1

15

/nologo

這個選項禁止在編譯器啟動時顯示開始標志和編譯過程中顯示報告信息。

例子:csc /nologo my.cs

16

/nooutput

編譯文件,但不創建任何輸出文件。用戶可以看到任何編譯錯誤和警告。

例子:csc /nooutput my.cs

17

/nostdlib

這個選項禁止導入mscorlib.dll。這個DLL包含了這個系統名稱空間。當用戶希望使用自己的系統名稱空間時,一般才會使用此選項。

例子:編譯文件,但不導入mscorlib.dl

csc /nooutput myOutput.cs

18

/nowarn

選項是在編譯過程中禁止指定的警告類型。如果是禁止多個警告類型,用逗號分隔。

例子:在編譯過程中禁止警告類型CS0108和CS0109

csc /nowarn:108,109 Warn.cs

19

/optimize

本選項激活或者禁用由編譯器執行優化。優化的結果是使得輸出文件更小、更快、更有效率。缺省是/optimize執行優化,如果你選用了/optimize-則禁止優化。/o是/optimize的簡寫。

例子:編譯文件,並禁止優化

csc /optimise- my.cs

20

/out

在沒有指定輸出文件的情況下,如果通過編譯器編譯後文件是EXE文件,則輸出文件將從包含Main方法的源代碼的文件中獲得名字;如果編譯後的文件是DLL文件,將從第一個源代碼文件中獲得名字。如果用戶想要指定輸出文件名稱,就可以使用此選項。

例子:編譯HelloWord.cs文件,並把輸出文件命名為Hello.exe

csc /out:Hello.exe helloworld.cs

21

/recurse

此選項允許用戶編譯在指定目錄或者工程目錄的所有子目錄中的所有源代碼文件。用戶可以使用通配符來編譯工程目錄下的所有匹配文件。

例子:編譯/dir1/dir2目錄下及其下級目錄中的所有C#文件,並生成dir2.dll

csc /target:library /out:dir2.dll /recurse: dir1\dir2\*.cs

22

/refrence

此選項可使得當前編譯工程使用指定文件中的公共類型信息。這個選項對於初學者是很重要的。此選項的簡寫是/r。你必須引用在程序代碼中使用"using"關鍵字導入的所有文件,如果在你的程序中,使用了自己編寫的類庫,在編譯時也必須引用。

例子:編譯文件,並引用在程序中使用的文件

csc /r:system.dll;myExec.exe;myLibrary.dll myProject.cs

(注:其中那個myExec.exe和myLibrary.dll時自己創建的)

23

/target

這個選項是告訴編譯器你所想得到什麼類型的輸出文件。除非使用/target:module選項,其他選項創建的輸出文件都包含著匯編名單。匯編名單存儲著編譯中所有文件的信息。在一個命令行中如果生成多個輸出文件,但只創建一個匯編名單,並存儲在第一個輸出文件中。

下面是/target的4種用法:

   /target:exe 創建一個可執行(EXE)的控制台應用程序

   /target:library 創建一個代碼庫(DLL)

   /target:winexe 創建一個windows程序(EXE)

   /target:module 創建一個模塊(DLL)

   例子:

   csc /target:exe myProj.cs // 創建一個EXE文件

   csc /target:winexe myProject.cs file://創建一個windows程序

   csc /target:library myProject.cs file://創建一個代碼庫

   csc /target:module myProject.cs file://創建一個模塊

24

/resource

此選項和/linkresource正好相反。他的作用是把.Net資源文件嵌入到輸出文件中,參數、用法都和/linkresource也相同,具體可參考前面/linkresource選項。

25

/unsafe

此選項是告訴編譯器采用非安全模式編譯文件

例子:用非安全模式編譯my.cs

csc /unsafe my.cs

26

/warn

使用本選項是在編譯過程中采用什麼等級的警告級別。警告級別含義:0關閉所有警告;1只顯示嚴重警告;2級別為1的警告和某些不嚴重的警告;3級別為2的警告和某些不算非常嚴重的警告;4 級別為3的警告和信息警告

例子:編譯文件,不顯示任何錯誤

csc /warn:0 my.cs

27

/warnaserror

告訴編譯器把在編譯中把所有的警告當成錯誤來處理。/warnaserror-是缺省選項,在該選項下編譯中的警告不影響文件的輸出。/warnaserror和/warnaserror+是一樣的。

例子:編譯文件,並在編譯中把警告當成錯誤

csc /warnaserror myj.cs

28

/win32icon

在輸出文件中插入一個圖標文件(.ico)。從而在Windows中的資源管理器中就看到以此圖標標識的文件了。

例子:csc /win32icon:myicon.ico my.cs

29

/win32res

在輸出文件中添加一個win32的資源文件。此資源文件包括用戶應用程序的版本信息或者位圖(圖標)信息。如果用戶不指定/win32res,編譯器將根據匯編版本生成版本信息。

例子:添加一個win32資源文件到輸出文件中

csc /win32res:winrf.res mt.cs

   


怎用CSCexe來編譯Visual C#的代碼文件

  CSC.exe把Visual C#程序代碼編譯成IL文件時,有著很多參數和開關選項。正確的了解和運用這些參數和開關有時會解決一些看似很棘手的問題。下面就通過一張表來大致說明一下這些參數和開關的具體作用。這些參數和開關選項是按照字母順序來排列的。其中帶"*",是一些常用的參數或開關。
 

C# 命令行編譯器 (cscexe) 怎打開?

你去www.enet.com.cn/eschool/video/c/1.shtml看視頻有教你怎麼配置
還有很多新手知識
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved