版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
摘自.CS文件編譯生成.DLL文件(C#網(wǎng)絡(luò)搜集)假如沒有VS用下面方法搜索csc.exe打開cmd轉(zhuǎn)到csc.exe文件夾運(yùn)行csc/t:library
N:\NET\cs\*.cs
N:\NET\cs\*.cs
是你cs文件位置正常情況下csc.exe目錄下會(huì)多個(gè)dll文件copy出來程序是經(jīng)過編譯執(zhí)行,這個(gè)大家都知道,尤其是使用Codebehind時(shí)候,必須先把背后.cs文件編譯形成.dll文件,然后才能夠執(zhí)行。這個(gè)過程,假如你有,那很輕松就能夠完成,但假如沒有,那就得借助命令行了。仔細(xì)查一下.netframeworksdk文檔,能夠找到關(guān)于這個(gè)話題詳細(xì)說明,好象沒有必要專門貼一篇文章,不過今下午我在用時(shí)候卻發(fā)覺了一個(gè)問題,文檔中說“運(yùn)行VCVARS32.BAT”,但當(dāng)你進(jìn)入.netframeworksdk安裝目錄bin文件夾下,卻并沒有發(fā)覺VCVARS32.BAT文件,這個(gè)時(shí)候只能使用sdkvars.bat文件了,其實(shí)這個(gè)作用應(yīng)該是和那個(gè)“傳說中”VCVARS32.BAT相同。當(dāng)你運(yùn)行了sdkvars后,就能夠使用先前“被封印”csc命令了。然后就能夠用csc命令編譯.cs文件了,這個(gè)時(shí)候可能又會(huì)出現(xiàn)一個(gè)問題,按照大部分書上說法,你只要指定了Inherits和Codebehind,而且用csc編譯了那個(gè)背后.cs,就能夠運(yùn)行這個(gè)aspx文件,但實(shí)際上并不是這么,錯(cuò)誤提醒為“找不到指定類”。處理方法就是在根目錄下建立一個(gè)bin文件夾,然后把編譯產(chǎn)生.dll文件放到里面去,這么問題應(yīng)該就處理了。假如還是找不到,那問題可能是你bin文件夾并不是在根目錄最上面,而是在根目錄下某個(gè)文件夾里,這個(gè)時(shí)候你需要做就是把它拖到最上面。下面給出命令行示例,這個(gè)其實(shí)在.netframeworksdk文檔里就能夠找到,不過為了方便,還是復(fù)制了過來:編譯File.cs以產(chǎn)生File.exe:cscFile.cs編譯File.cs以產(chǎn)生File.dll:csc/target:libraryFile.cs編譯File.cs并創(chuàng)建My.exe:csc/out:My.exeFile.cs經(jīng)過使用優(yōu)化和定義DEBUG符號(hào),編譯當(dāng)前目錄中全部C#文件。輸出為File2.exe:csc/define:DEBUG/optimize/out:File2.exe*.cs編譯當(dāng)前目錄中全部C#文件,以產(chǎn)生File2.dll調(diào)試版本。不顯示任何徽標(biāo)和警告:csc/target:library/out:File2.dll/warn:0/nologo/debug*.cs將當(dāng)前目錄中全部C#文件編譯為Something.xyz(一個(gè)DLL):csc/target:library/out:Something.xyz*.cs編譯File.cs以產(chǎn)生File.dll:csc/target:libraryFile.cs這個(gè)就是我們使用最多一個(gè)命令,其實(shí)能夠簡單寫成csc/t:libraryFile.cs,另外一個(gè)寫法是csc/out:mycodebehind.dll/t:librarymycodebehind.cs,這個(gè)能夠自己指定輸出文件名。csc/out:mycodebehind.dll/t:librarymycodebehind.csmycodebehind2.cs,這個(gè)作用是把兩個(gè)cs文件裝到一個(gè).dll文件里,很有用哦。csc.exe是.net用來編譯.cs文件,但必須要在安裝目錄下使用。所以我們要設(shè)置一下環(huán)境變量。VisualC#是微軟企業(yè)推出新一代程序開發(fā)語言,VisualC#是微軟企業(yè).NetFrameWork框架中一個(gè)主要組成部分,也是微軟企業(yè)向程序員極力推薦一個(gè)新程序開發(fā)平臺(tái)。和以往開發(fā)語言相比較,他有更強(qiáng)大功效,更高穩(wěn)定性和更高安全性。也正因?yàn)槿绱?,VisualC#正在受到越來越多編程興趣者歡迎。
VisualC#編譯器和以往編程語言編譯器有著顯著不一樣。其最大不一樣點(diǎn)就是,以往程序編譯器是把編寫好程序代碼編譯生成能夠直接為計(jì)算機(jī)所使用機(jī)器語言。即使VisualC#編譯器也能夠把編寫好程序代碼編譯成EXE或者是DLL文件,但這種文件只是一個(gè)IL文件(中間語言),此IL文件不能直接被計(jì)算機(jī)使用。只是當(dāng)此IL文件被調(diào)用時(shí)候,再經(jīng)過一個(gè)名叫JIT(即時(shí)編譯)編譯器把此IL文件生成能夠供計(jì)算機(jī)使用機(jī)器代碼??梢奦isualC#編譯過程大致能夠分成二個(gè)部分,第一個(gè)部分,從程序代碼到IL文件,這個(gè)過程是經(jīng)過人工干預(yù)來實(shí)現(xiàn),即經(jīng)過CSC.exe來實(shí)現(xiàn);第二個(gè)部分,從IL文件到機(jī)器語言,這個(gè)工程是機(jī)器自動(dòng)實(shí)現(xiàn)。本文就將詳細(xì)來說明一下第一個(gè)部分,即怎樣用CSC.exe來正確編譯VisualC#文件。CSC.exe把VisualC#程序代碼編譯成IL文件時(shí),有著很多參數(shù)和開關(guān)選項(xiàng)。正確了解和利用這些參數(shù)和開關(guān)有時(shí)會(huì)處理一些看似很棘手問題。下面就經(jīng)過一張表來大致說明一下這些參數(shù)和開關(guān)詳細(xì)作用。這些參數(shù)和開關(guān)選項(xiàng)是按照字母次序來排列。其中帶"*",是一些慣用參數(shù)或開關(guān)。選項(xiàng)用途@*指定響應(yīng)文件。/?,/help在控制臺(tái)計(jì)算機(jī)屏幕上顯示編譯器選項(xiàng)/addmodule指定一個(gè)或多個(gè)模塊為集會(huì)一部分/baseaddress指定裝入DLL基礎(chǔ)地址/bugreport創(chuàng)建一個(gè)文件,該文件包含是匯報(bào)錯(cuò)誤愈加輕易信息/checked假如整數(shù)計(jì)算溢出數(shù)據(jù)類型邊界,則在運(yùn)行時(shí)產(chǎn)生一個(gè)例外事件/codepage指定代碼頁方便在編譯中使用全部源代碼文件/debug*發(fā)送調(diào)試信息/define定義預(yù)處理程序符號(hào)/doc*把處理文檔注釋為XML文件/fullpaths指定編譯輸出文件反正路徑/incremental對(duì)源代碼文件進(jìn)行增量編譯/linkresource把.NET資源鏈接到集合中/main指定Main方法位置/nologo禁止使用編譯器標(biāo)志信息/nooutput編譯文件但不輸出文件/nostdlib不導(dǎo)出標(biāo)準(zhǔn)庫(即mscorlib.dll)/nowarn編譯但編譯器并不顯示警告功效/optimize打開或者關(guān)閉優(yōu)化/out*指定輸出文件/recurse搜索編譯源文件子目錄/reference*從包含集合文件中導(dǎo)入元數(shù)據(jù)/target*指定輸出文件格式/unsafe編譯使用非安全關(guān)鍵字代碼/warn設(shè)置警告級(jí)別/warnaserror提升警告為錯(cuò)誤/win32icon插入一個(gè).ico文件導(dǎo)輸出文件中去/win32res插入一個(gè)Win32資源導(dǎo)輸出文件中===============================================詳細(xì)說明:一.@這個(gè)選項(xiàng)是用來指定響應(yīng)文件。響應(yīng)文件是一個(gè)包含了許多編譯選項(xiàng)文件。這些編譯選項(xiàng)將和源代碼文件一起由編譯器進(jìn)行處理。通常來說此種響應(yīng)文件是以文本文件形式出現(xiàn)。他擴(kuò)展名是.rsp。在響應(yīng)文件中是用#符號(hào)表示開始注釋。例:以下是一個(gè)響應(yīng)文件resp1.rsp內(nèi)容:#這是一個(gè)簡單響應(yīng)文件,文件名稱為resp1.rsp#使用方法:csc@resp1.rsp
/target:exe/out:sample.exesample.cs
此響應(yīng)文件作用就是把sample.cs文件編譯成sample.exe文件。假如在一次編譯中要指定多個(gè)響應(yīng)文件,能夠指定多個(gè)響應(yīng)文件選項(xiàng),如:@file1.rsp@file2.rsp
二./?和/help這個(gè)選項(xiàng)應(yīng)該無須多說,那些用過DOS程序人,大約都會(huì)用這個(gè)選項(xiàng)。三./addmodule本選項(xiàng)是使編譯器搜集從用戶正在編譯工程到可用文件中所以類型信息。全部添加了/addmodule模塊在運(yùn)行時(shí)必須與輸出文件在同一目錄中。這就是說,用戶能夠在編譯時(shí)指定任何目錄中模塊,但在運(yùn)行時(shí)這個(gè)模塊必須在應(yīng)用程序目錄中。文件中不能包含匯編名單。比如:假如輸出文件用/taarget:module創(chuàng)建,其元數(shù)據(jù)能夠用/addmodule導(dǎo)入。例子:把二個(gè)模塊加入myProject.cs中csc/addmodule:module1.dll;module2.dllmyProject.cs
四./baseaddress本選項(xiàng)允許用戶指定載入DLL時(shí)首選地址,這個(gè)首選地址能夠是十進(jìn)制、十六進(jìn)制、八進(jìn)制。DLL缺省首選地址在.Net運(yùn)行時(shí)設(shè)置。假如目標(biāo)文件不是DLL文件,這個(gè)選項(xiàng)將被忽略。例子:把myLibrary.cs編譯程DLL文件,而且當(dāng)此DLL在.Net運(yùn)行環(huán)境被載入時(shí)地址是0x1111000csc/baseaddres:0x1111000/target:librarymyLibrary.cs
五./bugreport這個(gè)選項(xiàng)用來匯報(bào)編譯時(shí)錯(cuò)誤信息。在匯報(bào)中包含以下內(nèi)容:1).編譯中全部源代碼一個(gè)拷貝2).在編譯中全部編譯選項(xiàng)3).編譯信息,包含編譯器、運(yùn)行時(shí)間、操作系統(tǒng)版本信息4).編譯器輸出5).問題描述6).怎樣處理問題描述例子:生成一個(gè)bugs.txt文件,并把錯(cuò)誤匯報(bào)放在文件里面csc/bugreport:bugs.txtHello.cs
六./checked此選項(xiàng)指定不在檢驗(yàn)或或者未檢驗(yàn)關(guān)鍵字范圍內(nèi)以及造成超出數(shù)據(jù)類型范圍值整數(shù)計(jì)算語句是否產(chǎn)生運(yùn)行例外。詳細(xì)說就是,假如不在檢驗(yàn)或者未檢驗(yàn)關(guān)鍵字范圍內(nèi)整數(shù)計(jì)算語句產(chǎn)生值在數(shù)據(jù)類型允許范圍之外,而且在編譯中使用了/checked+(/checked),該語句就會(huì)在運(yùn)行時(shí)產(chǎn)生例外,假如在編譯時(shí)使用了/checked-,在運(yùn)行時(shí)該語句就不會(huì)產(chǎn)生例外。例子:編譯myMath.cs,而且指定一個(gè)不在檢驗(yàn)或者未檢驗(yàn)關(guān)鍵字范圍內(nèi)整數(shù)計(jì)算語句(且其產(chǎn)生值超出數(shù)據(jù)類型范圍),將在運(yùn)行時(shí)引發(fā)例外。csc/checked+myMath.cs
七./codepage假如用戶編譯一個(gè)或者多個(gè)源代碼不使用計(jì)算機(jī)上默認(rèn)代碼頁,能夠使用/codepage選項(xiàng)來指定希望使用代碼頁。/codepage適適用于編譯中全部源代碼文件。假如源代碼文件在計(jì)算機(jī)上同一個(gè)代碼頁位置創(chuàng)建,或者源代碼文件用UNICODE或者UTF-8來創(chuàng)建,用戶就不需要使用/codepage了。八./debug此選項(xiàng)是在調(diào)試時(shí)候使用,當(dāng)調(diào)試者啟用了這個(gè)選項(xiàng)來調(diào)試自己程序,將會(huì)創(chuàng)建一個(gè).pdb文件,并把各種調(diào)試信息寫到此文件里。有2中選項(xiàng)來指定調(diào)試類型:/debug[+/-]:當(dāng)選取/debug+就會(huì)把創(chuàng)建.pdb文件,并把調(diào)試信息存放到里面;/debug-是一個(gè)缺省設(shè)置,就是不產(chǎn)生任何調(diào)試信息。/debug:[full/pdbonly]:當(dāng)使用/debug:full就是創(chuàng)建缺省調(diào)試信息,有點(diǎn)類似/debug+選項(xiàng)。/debug:pdbonly選項(xiàng)是創(chuàng)建.pdb文件,而且你只能使用源代碼調(diào)試在調(diào)試工具里。例子:編譯Hello.cs而且為Hello.cs創(chuàng)建調(diào)試信息csc/debug+HelloWorld.cs
九./define此選項(xiàng)在程序中定義了一個(gè)符號(hào),他和在源程序中使用#define預(yù)處理程序指示功效相同,此符號(hào)保持已定義狀態(tài),直到源文件中#undef指示符刪除定義或者編譯器已抵達(dá)了文件末尾。你能夠用/d簡寫來代替。例子:下面是my.cs源程序}
假如用csc/define:finalmy.cs來編譯就會(huì)顯示"FinalBuild",假如沒有/define,編譯后執(zhí)行就會(huì)顯示"TrialBuild"。十./doc例子:以下是my.cs源程序publicclassmyDocument{}
用以下編譯語句會(huì)產(chǎn)生my.xml文件,看看my.xml文件到底存放了什么東西。Csc/doc:my.xmlmy.cs
十一./fullpaths在默認(rèn)情況下,編譯產(chǎn)生錯(cuò)誤或者警告都只會(huì)指明發(fā)覺錯(cuò)誤文件名稱,加入此選項(xiàng)使得在編譯器產(chǎn)生錯(cuò)誤或者警告時(shí)候會(huì)顯示完整路徑。你能夠把上面my.cs程序語法搞錯(cuò),再用csc/fullpathsmy.cs和cscmy.cs分別編譯,看看錯(cuò)誤提醒有什么不一樣。十二./incremental本選項(xiàng)主要是激活增量編譯器,這種編譯器只對(duì)上次編譯后發(fā)生改變函數(shù)進(jìn)行編譯。假如在編譯時(shí)候選取了/debug選項(xiàng),調(diào)試信息狀態(tài)存放在對(duì)應(yīng).pdb文件中。除此編譯時(shí)信息都存放在.incr文件中,此.incr文件名稱為output_file_name.extension.incr。即假如輸出文件時(shí)out.exe,則此文件對(duì)應(yīng)incr文件是out.exe.incr文件。例子:利用增量編譯器來編譯文件csc/incremental/out:my.exemy.cs
假如編譯成功則會(huì)產(chǎn)生2個(gè)文件,分別是:my.exe和my.exe.incr。十三./linkresource這個(gè)選項(xiàng)就是在輸出文件中創(chuàng)建到.Net資源鏈接。他簡寫是/linkres。資源文件就是在那些在工程文件中使用到全部資源,像圖片、聲音等。這個(gè)選項(xiàng)只是對(duì)于資源文件建立鏈接,這么有利于管理使用同一資源程序,而不需要多個(gè)副本。此選項(xiàng)詳細(xì)語法以下:/linkresource:filename,identifier,mimetype
其中:filename:是想建立鏈接.Net資源文件identifier(可選):資源邏輯名稱,該名稱用于載入資源,默認(rèn)名稱是文件名稱。mimetype(可選):是一個(gè)代表資源媒介類型字符串。默認(rèn)為空。例子:在文件中建立一個(gè)指向reso.resource鏈接csc/linkres:reso.resourcemyResource.cs
十四./main當(dāng)我們編譯二個(gè)或者多個(gè)擁有Main方法Class,我們能夠使用這個(gè)選項(xiàng)讓用戶指定最終輸出文件中使用那個(gè)Main方法。例子:編譯二個(gè)文件,但輸出文件中Main方法來自Main1ClasscscmyMain1.csmyMain2.cs/main:Main1
十五./nologo這個(gè)選項(xiàng)禁止在編譯器開啟時(shí)顯示開始標(biāo)志和編譯過程中顯示匯報(bào)信息。例子:csc/nologomy.cs
十六./nooutput編譯文件,但不創(chuàng)建任何輸出文件。用戶能夠看到任何編譯錯(cuò)誤和警告。例子:csc/nooutputmy.cs
十七./nostdlib這個(gè)選項(xiàng)禁止導(dǎo)入mscorlib.dll。這個(gè)DLL包含了這個(gè)系統(tǒng)名稱空間。當(dāng)用戶希望使用自己系統(tǒng)名稱空間時(shí),通常才會(huì)使用此選項(xiàng)。例子:編譯文件,但不導(dǎo)入mscorlib.dlcsc/nooutputmyOutput.cs
十八./nowarn例子:在編譯過程中禁止警告類型CS0108和CS0109csc/nowarn:108,109Warn.cs
十九./optimize本選項(xiàng)激活或者禁用由編譯器執(zhí)行優(yōu)化。優(yōu)化結(jié)果是使得輸出文件更小、更加快、更有效率。缺省是/optimize執(zhí)行優(yōu)化,假如你選取了/optimize-則禁止優(yōu)化。/o是/optimize簡寫。例子:編譯文件,并禁止優(yōu)化csc/optimise-my.cs
二十./out在沒有指定輸出文件情況下,假如經(jīng)過編譯器編譯后文件是EXE文件,則輸出文件將從包含Main方法源代碼文件中取得名字;假如編譯后文件是DLL文件,將從第一個(gè)源代碼文件中取得名字。假如用戶想要指定輸出文件名稱,就能夠使用此選項(xiàng)。例子:編譯HelloWord.cs文件,并把輸出文件命名為Hello.execsc/out:Hello.exehelloworld.cs
二十一./recurse此選項(xiàng)允許用戶編譯在指定目錄或者工程目錄所以子目錄中全部源代碼文件。用戶能夠使用通配符來編譯工程目錄下全部匹配文件。例子:編譯/dir1/dir2目錄下及其下級(jí)目錄中全部C#文件,并生成dir2.dllcsc/target:library/out:dir2.dll/recurse:dir1"dir2"*.cs
二十二./refrence此選項(xiàng)可使得當(dāng)前編譯工程使用指定文件中公共類型信息。這個(gè)選項(xiàng)對(duì)于初學(xué)者是很主要。此選項(xiàng)簡寫是/r。你必須引用在程序代碼中使用"using"關(guān)鍵字導(dǎo)入全部文件,假如在你程序中,使用了自己編寫類庫,在編譯時(shí)也必須引用。例子:編譯文件,并引用在程序中使用文件csc/r:system.dll;myExec.exe;myLibrary.dllmyProject.cs
(注:其中那個(gè)myExec.exe和myLibrary.dll時(shí)自己創(chuàng)建)二十三./target這個(gè)選項(xiàng)是告訴編譯器你所想得到什么類型輸出文件。除非使用/target:module選項(xiàng),其余選項(xiàng)創(chuàng)建輸出文件都包含著匯編名單。匯編名單存放著編譯中全部文件信息。在一個(gè)命令行中假如生成多個(gè)輸出文件,但只創(chuàng)建一個(gè)匯編名單,并存放在第一個(gè)輸出文件中。下面是/target4種使用方法:/target:exe創(chuàng)建一個(gè)可執(zhí)行(EXE)控制臺(tái)應(yīng)用程序/target:library創(chuàng)建一個(gè)代碼庫(DLL)/target:winexe創(chuàng)建一個(gè)windo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語外貿(mào)大學(xué)《企業(yè)生產(chǎn)物流》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東松山職業(yè)技術(shù)學(xué)院《項(xiàng)目管理與案例分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東水利電力職業(yè)技術(shù)學(xué)院《書法基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)上冊《5.2.3 解一元一次方程 去括號(hào)》課件與作業(yè)
- 廣東南華工商職業(yè)學(xué)院《花式跳繩》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東梅州職業(yè)技術(shù)學(xué)院《創(chuàng)業(yè)經(jīng)營與廣告公司管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東嶺南職業(yè)技術(shù)學(xué)院《文獻(xiàn)檢索及研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 八年級(jí)上冊英語課本
- 從起跑線出發(fā):小學(xué)一年級(jí)班主任的教學(xué)策略分享
- 【KS5u原創(chuàng)】2021年理綜生物試題4(解析版)
- GB/T 2423.17-2024環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn)Ka:鹽霧
- 《珍愛生命拒絕毒品》主題班會(huì)課件
- 儲(chǔ)能鋰離子電池 液冷熱管理系統(tǒng)運(yùn)行和維護(hù)規(guī)范
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 2024AI Agent行業(yè)研究報(bào)告
- 宮腔鏡手術(shù)并發(fā)癥及處理
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)方案2024~2026(工貿(mào))
- 華為質(zhì)量回溯(根因分析與糾正預(yù)防措施)模板
- 2024版內(nèi)蒙古自治區(qū)勞動(dòng)合同書(臨時(shí)工、季節(jié)工、農(nóng)民輪換工)
- GB/T 23587-2024淀粉制品質(zhì)量通則
- 急性化膿性中耳炎病人的護(hù)理課件
評(píng)論
0/150
提交評(píng)論