佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > asp.net 專業(yè)源代碼打包工具

asp.net 專業(yè)源代碼打包工具

熱門(mén)標(biāo)簽:團(tuán)購(gòu)網(wǎng)站 服務(wù)器配置 Linux服務(wù)器 電子圍欄 Mysql連接數(shù)設(shè)置 阿里云 銀行業(yè)務(wù) 科大訊飛語(yǔ)音識(shí)別系統(tǒng)

不過(guò),有些人做事比較馬虎,經(jīng)常就是直接將VS生成的解決方案目錄直接打包,這樣就會(huì)包含大量垃圾文件,諸如:obj目錄下的所有文件,而且有時(shí)bin目錄還有二個(gè)目錄,PDB文件有二份,甚至連xxx.vshost.exe文件也有二份!更讓人無(wú)語(yǔ)的是,有些人用SVN這種源代碼管理軟件,每個(gè)目錄還有個(gè).svn目錄!

這種做法顯然很容易將一個(gè)不大的項(xiàng)目搞成一個(gè)比較大的壓縮包,這種壓縮包一旦做好,上傳也慢,人家下載也慢,還會(huì)浪費(fèi)許多服務(wù)器資源,下載到這種壓縮包,只能讓人無(wú)語(yǔ)了。沒(méi)辦法,有些人就是很懶,而且那些壓縮軟件也不懂這是個(gè)源代碼目錄,反正是見(jiàn)文件就壓縮!雖然很悲劇,但悲劇卻一直在重復(fù)上演!現(xiàn)實(shí)就是這樣,估計(jì)有些人已經(jīng)麻木了!

我是個(gè)追求完美的人,自然是不希望讓悲劇在我這里重復(fù)上演。我不希望浪費(fèi)我的上傳時(shí)間,不希望浪費(fèi)服務(wù)器的硬盤(pán)資源,不希望浪費(fèi)服務(wù)器的帶寬,也不希望浪費(fèi)所有網(wǎng)友的下載時(shí)間,更不希望有人會(huì)因此而罵我。因此我每次做出來(lái)的壓縮包是不包含那些垃圾文件的。我是如何做的呢?很簡(jiǎn)單啊,不要把一些垃圾文件打包進(jìn)去不就好了嗎?還要怎樣?

不過(guò),我也很理解一些懶人,每次打包前去把這些文件找出來(lái),刪除它們,也是有些麻煩。當(dāng)然了,我也不愿意每次都做這種機(jī)械的事情,我也想偷懶。

嗯,既然打包前刪除這些垃圾文件是件機(jī)械的事情,那么能不能搞個(gè)程序去做呢,我是程序員啊。

終于有一天,我也受不了了,尤其是我平時(shí)喜歡寫(xiě)點(diǎn)小東西,每天改了之后要備份,也要用壓縮包,但我不想浪費(fèi)硬盤(pán)空間啊。在一次一次地被那些壓縮軟件折磨后,我還是選擇自己來(lái)設(shè)計(jì)一個(gè)工具來(lái)專門(mén)解決這個(gè)問(wèn)題。不就是個(gè)壓縮的事情不好解決嘛,那我就自己做吧,反正現(xiàn)在的壓縮類庫(kù)是一大把,不過(guò),我最終還是選擇了Windows自帶的FCI/FDI接口,它能直接生成cab格式的壓縮包,且現(xiàn)在流行的各種壓縮軟件都能支持它。選擇它還有其它原因:1.我早在使用C#之前就已經(jīng)使用過(guò)它了,有現(xiàn)成的包裝庫(kù)(C語(yǔ)言版的,速度還不錯(cuò)),2.由于是Windows自帶的接口,因此不需要引入額外的組件,工具可以保持較小的體積, 3.cab算法的壓縮率還不錯(cuò),比zip要好(與rar相當(dāng),比7z差點(diǎn))。

今天,我將向大家推薦一個(gè)我?guī)缀跆焯煸谟玫墓ぞ摺K芎芡昝赖慕鉀Q以上問(wèn)題,它還有其它功能,我也非常喜歡它。下面,我就來(lái)介紹此工具。

記住哦,這個(gè)工具的名字叫:FishCabTool

工具介紹

來(lái)看看我的工具吧,總共由4個(gè)文件組成:

雖然是4個(gè)文件,但依然很小,離300K還有些距離哦。下面來(lái)依次介紹這4個(gè)文件的用途:

1. FishCabToolHelp.chm,它是一個(gè)幫助文件,介紹了工具的特色功能,操作方式,以及其它說(shuō)明:

2. FishCabTool.exe,它是這個(gè)工具的主程序了,是一個(gè)WinForm程序,運(yùn)行界面如下:

通常,并不需要直接運(yùn)行它,而是從資源管理器的上下文菜單中啟動(dòng)它,操作方式與現(xiàn)今流行的壓縮軟件一樣,如下圖。

3. FishCabToolExt.dll,它是一個(gè)Windows資源管理器的插件,可以讓我的工具也能像一些壓縮軟件一樣,直接在Windows資源管理器的右鍵菜單中操作,如下圖:

為了不影響操作體驗(yàn),這個(gè)插件采用ATL的方式實(shí)現(xiàn),因此速度還是很不錯(cuò)的。說(shuō)到速度,再給個(gè)具體的數(shù)據(jù)吧:當(dāng)年在開(kāi)發(fā)這個(gè)工具時(shí),是在一臺(tái)(02年的)老機(jī)器上進(jìn)行的,由于機(jī)器配置較差,所以性能相當(dāng)敏感。測(cè)試時(shí)我選擇Windows/System32文件夾下的所有文件,右擊鼠標(biāo)并測(cè)量菜單出現(xiàn)的時(shí)間,WinRar V2.6花了27秒,7z V4.x花了差不多8秒,我的工具還不到3秒。所以,不要擔(dān)心這個(gè)插件的會(huì)影響您的機(jī)器性能。

說(shuō)明:FishCabToolExt.dll采用Unicode方式編寫(xiě),所以理論上即使不是簡(jiǎn)體中文的Windows下也能正常顯示漢字。

4. FishCabLibU.dll,它是一個(gè)包裝層,用于封裝Windows的FCI/FDI接口,因?yàn)檫@二個(gè)接口是基于C的,且接口較為復(fù)雜,我也只好用C來(lái)封裝了,并以標(biāo)準(zhǔn)的導(dǎo)出函數(shù)提供給其它編程語(yǔ)言調(diào)用。導(dǎo)出的API函數(shù)如下圖:

在寫(xiě)這篇博客時(shí),看到當(dāng)年給這些API取的名字,我也郁悶了:這些名字也太亂了吧。哎,2004年咱的命名規(guī)范還真差勁啊。

FCI/FDI是Windows的文件壓縮接口/文件解壓縮接口的簡(jiǎn)稱。它提供了操作CAB壓縮包的具體實(shí)現(xiàn)算法,該接口涉及一大堆C風(fēng)格的回調(diào)函數(shù)。
微軟提供的關(guān)于此接口的SDK文檔:點(diǎn)擊此處下載(微軟的網(wǎng)站上找不到了,遺憾中)

我封裝的接口是一種簡(jiǎn)化版本,各個(gè)API函數(shù)已經(jīng)是簡(jiǎn)單的數(shù)據(jù)類型,因此使用起來(lái)會(huì)比較容易,且提供Unicode和非Unicode二套API,如果您也對(duì)cab格式感興趣,并希望使用我的FishCabLibU.dll,請(qǐng)回復(fù),我可以提供C#版本的包裝類。
功能介紹
正如本文前面的幫助文件截圖所示,這個(gè)小工具有以下功能:

1. 專為備份源代碼而設(shè)計(jì),可以選擇性地排除源代碼目錄中一些不需要備份的文件。
如:obj目錄及.pdb和其它源代碼版本控制信息之類的“垃圾”文件。
具體哪些文件不需要在壓縮時(shí)加入壓縮包,程序提供如下的設(shè)置界面來(lái)控制

2. 操作方式和現(xiàn)今流行的壓縮軟件一致,直接在資源管理器的右鍵菜單中操作。
前面在介紹FishCabToolExt.dll時(shí)已有說(shuō)明,這里再次引用那二張圖片:

3. 生成的壓縮包采用cab的壓縮格式,兼容現(xiàn)今流行的各類壓縮軟件。
cab格式其實(shí)早就存在了,至少也有15年以上歷史。此文件格式由微軟開(kāi)發(fā),且在微軟的很多安裝包中都在使用這種格式。由于歷史悠久,且文件格式公開(kāi),因此現(xiàn)今流行的各類壓縮軟件都支持它。
注意:WinRar對(duì)cab的支持不夠好,如果cab采用UTF-8編碼方式創(chuàng)建包內(nèi)文件名,在WinRar中將會(huì)看到亂碼。而7z就沒(méi)有問(wèn)題,當(dāng)然了,我的工具也能正確地解包。

4. 壓縮包的文件名包含當(dāng)天的操作日期,便于版本管理及日后查找。
前面說(shuō)到我平時(shí)喜歡在業(yè)余時(shí)間寫(xiě)點(diǎn)小工具或者小項(xiàng)目,自然就會(huì)面對(duì)源代碼的版本管理問(wèn)題。但我卻不想為此而安裝一個(gè)龐大的源代碼管理軟件,感覺(jué)完全沒(méi)有必要。通常就是直接把項(xiàng)目目錄打包,然后在文件名上添加當(dāng)天日期。正是由于這個(gè)原因,這個(gè)工具會(huì)自動(dòng)根據(jù)目錄名稱以及當(dāng)天日期,生成一個(gè)合適的壓縮包文件名??梢詤⒁?jiàn)前面程序的主界面截圖。說(shuō)明:按F12可以去掉文件名中的日期部分。

5. 更靈活的備份選擇,可以將多個(gè)目錄及多個(gè)分區(qū)中的某些目錄或文件壓縮到一個(gè)壓縮包中。
我的工具還可以將來(lái)自于不同磁盤(pán)分區(qū)的文件打包在一個(gè)壓縮文件中。操作方法也很簡(jiǎn)單:直接將需要壓縮的文件或者文件夾拖動(dòng)主窗口中即可,如下圖:

程序生成的壓縮包用7z打開(kāi)的界面如下:

6. 可以方便地獲取一個(gè)目錄或文件的完整路徑名。
FishCabToolExt.dll中還有一個(gè)我經(jīng)常用到的功能就是:當(dāng)您在右擊一個(gè)文件或者文件夾時(shí),可以非常方便地獲取它的所在全路徑。效果圖前面有,請(qǐng)參考前文。

7. 可以方便地從任何目錄打開(kāi)命令行窗口。
我比較喜歡用Windows Server 2003,可是每當(dāng)以命令行方式執(zhí)行一些任務(wù)時(shí),都要打開(kāi)【運(yùn)行】窗口,輸入【cmd】后,再切換路徑,太麻煩了。 FishCabToolExt.dll中有個(gè)功能就可以很輕松地解決這個(gè)繁瑣的過(guò)程。您只需要在Windows資源管理器中右擊目錄,或者在目錄窗口的空白處右擊鼠標(biāo),點(diǎn)擊菜單【從這里打開(kāi)命令行窗口】就可以了,此時(shí),您會(huì)發(fā)現(xiàn),命令行窗口的當(dāng)前目錄就是您需要的目錄。效果圖前面有,請(qǐng)參考前文。
壓縮效果
為了證明我的工具對(duì)于源代碼目錄壓縮的效果是有明顯改善的,現(xiàn)在我來(lái)將我的工具與7-Zip做個(gè)比較 。
首先,我要說(shuō)明一下,7-Zip是目前全球最棒的壓縮軟件,它有著最高的壓縮率。
但它唯一遺憾的是就是 不能自動(dòng)在壓縮時(shí)過(guò)濾不必要的垃圾文件(相對(duì)于源代碼來(lái)說(shuō)),因此最終產(chǎn)生的壓縮包并不是最小的。

首先,我打開(kāi)VS2008,創(chuàng)建一個(gè)ConsoleApplication,然后不修改任何設(shè)置,并寫(xiě)了如下代碼:

復(fù)制代碼 代碼如下:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello Fish.");
}
}
}

再來(lái)編譯吧,我將這個(gè)項(xiàng)目按debug, release方式都編譯了一次。

然后,我請(qǐng)出我安裝的7-Zip V9.2把這個(gè)項(xiàng)目目錄做了個(gè)壓縮包。然后,我又用我的工具也做了個(gè)壓縮包。二個(gè)包的大小如下:

有圖有真相,我就不多解釋了。
補(bǔ)充說(shuō)明
默認(rèn)的參數(shù)是按照C#項(xiàng)目及SVN版本控制軟件而設(shè)置的,如有其它的備份要求,請(qǐng)重新設(shè)置參數(shù)。
默認(rèn)的參數(shù)并沒(méi)有采用最好的壓縮質(zhì)量,如果你需要較高的壓縮質(zhì)量,那么請(qǐng)自行調(diào)整。
運(yùn)行本程序需要 .net Frarmework 2.0
由于FishCabToolExt.dll是個(gè)ATL COM,由32位的VC++6編譯器編譯,因此這個(gè)插件只能在32位的Windows中運(yùn)行。
不過(guò),F(xiàn)ishCabTool.exe是個(gè)采用C#編寫(xiě)的WinForm程序,且要求以32位方式運(yùn)行,因此如果在64位的Windows中,那么只能從開(kāi)始菜單中啟用本程序。
此時(shí),程序仍能正常運(yùn)行,只是不能從資源管理器的右鍵菜單中啟動(dòng)。


如何干凈的卸載本工具

我寫(xiě)的是一個(gè)我認(rèn)為有用的小工具,而非流氓軟件。如果您認(rèn)為它沒(méi)有任何優(yōu)點(diǎn),請(qǐng)按如下方法卸載它。

由于FishCabToolExt.dll是個(gè)Windows資源管理器的插件,它一旦被加載,就不能立即卸載了。具體方法請(qǐng)參考下文:

FishCabTool的安裝程序可以非常干凈地將FishCabTool從你的電腦上刪除(包括所有文件及注冊(cè)表項(xiàng))。
如需卸載,請(qǐng)關(guān)閉全部資源管理器窗口(建議注銷后重新登錄),然后直接打開(kāi)“控制面板”中的“添加或刪除程序”,選擇刪除FishCabTool即可。
注意:由于FishCabTool有一部分作為資源管理器的插件會(huì)被自動(dòng)加載,所以在卸載時(shí)一定要保證關(guān)閉全部資源管理器窗口(包括桌面進(jìn)程)。


上傳代碼到博客園
由于博客園的后臺(tái)操作界面只支持三種格式的壓縮包:zip, rar, 7z ,所以如果您打算用這個(gè)工具打包您的代碼并上傳到博客園時(shí),請(qǐng)修改文件名,在后面加上 .7z
例如:我的博客【客戶端的異步操作】就提供一些示例代碼,我用工具打包后,生成的文件名是【AsyncClient_20111023.cab】,然后我將文件名修改為【AsyncClient_20111023.cab.7z】,就可以上傳了。
可以放心的是:7-Zip 是可以識(shí)別這種改名后的文件。

由于現(xiàn)在知道CAB格式的人越來(lái)越少,可能還有些網(wǎng)站也不能支持直接上傳,那么可按這種方式修改一下擴(kuò)展名。

在此,我發(fā)出一個(gè)倡議:從現(xiàn)在起,如果您要與他人分享您的示例代碼,那么請(qǐng)?jiān)诖虬鼤r(shí),不要包含不必要的垃圾文件。
因?yàn)槟切├募?huì):浪費(fèi)您的上傳時(shí)間,浪費(fèi)服務(wù)器的硬盤(pán)資源,浪費(fèi)服務(wù)器的帶寬,浪費(fèi)所有網(wǎng)友的下載時(shí)間。
舉手之勞,利人利已。

說(shuō)明:工具可免費(fèi)使用,沒(méi)有版權(quán)限制。

點(diǎn)擊此處下載安裝程序(2011-10-30更新)

您可能感興趣的文章:
  • asp.net下URL處理兩個(gè)小工具方法
  • Asp.Net權(quán)限管理系統(tǒng) 專用代碼生成工具(DDBuildTools) 1.1.0 下載
  • asp.net Google的translate工具翻譯 API
  • asp.net 半角全角轉(zhuǎn)化工具
  • asp.net 實(shí)現(xiàn)防迅雷等下載工具盜鏈
  • asp.net(c#)做一個(gè)網(wǎng)頁(yè)數(shù)據(jù)采集工具
  • IE 性能分析工具(asp.net環(huán)境)
  • asp.net防止刷新時(shí)重復(fù)提交(可禁用工具條刷新按鈕)
  • ASP.NET開(kāi)發(fā)中經(jīng)常用到10款工具軟件介紹

標(biāo)簽:衡水 萍鄉(xiāng) 蚌埠 棗莊 江蘇 廣元 大理 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net 專業(yè)源代碼打包工具》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    湖南省| 上杭县| 景泰县| 长沙县| 怀化市| 四会市| 莱阳市| 建湖县| 板桥市| 洪雅县| 福安市| 宣武区| 黄石市| 区。| 东明县| 新绛县| 黄冈市| 麻栗坡县| 黄石市| 六枝特区| 滁州市| 宝山区| 乐陵市| 宕昌县| 饶阳县| 区。| 延安市| 夏河县| 台南县| 谢通门县| 卓尼县| 区。| 城口县| 增城市| 海淀区| 汉沽区| 安丘市| 子长县| 奇台县| 通河县| 长乐市|