• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            NAnt 簡介

            NAnt 是一個 Visual Studio .Net 應(yīng)用程序的連編工具,對大而負責(zé)的工程而言,使用 NAnt 很方便。

            1.????? 安裝

            http://nant.sourceforge.net 上可以下載源代碼或者編譯好的二進制文件,一般下載 nant-bin.zip ,解壓,注冊系統(tǒng)環(huán)境變量后,就可以使用 nant 命令了。

            2.????? Build 文件

            XML 格式,每個 build 文件包含一個 project , project 有若干 target ,每個 target 包含若干 task 。 Task 不被包含在 target 中,即直接包含在 project 中。

            ??????? Projects (工程)

            三個特性, name 、設(shè)置工程名稱, default 、設(shè)置默認 target ,和 basedir 、如果不設(shè)置,默認為 build 文件的父目錄。

            執(zhí)行 nant 時,可以知道 targets ,如果未指定,執(zhí)行默認得 target ,如果 build 文件中未指定默認得 target ,僅僅執(zhí)行全局的 task (全局的 task 總是執(zhí)行),如果沒有全局的 task ,那就什么都不執(zhí)行了。

            ??????? Targets (目標、對象)

            有五個特性, name 、指定名稱, depends 、此 target 所依賴的 targets (多個用“,”隔開), if 、如果條件為 true 執(zhí)行此 target , unless 、如果條件為 true 跳過此 target , description 、功能的簡短描述。其中 name 必須指定。

            執(zhí)行某個 target 時,首先執(zhí)行此 target 所依賴的 targets 。一個 target 可能被 depends 多次,僅執(zhí)行一次,但是通過 <call> 任務(wù)( task )執(zhí)行一個 target 時,此 target 及其所依賴的 targets 要重新執(zhí)行一次。另外,當(dāng) target 的名稱被設(shè)置為“ * ”時,稱為 wild target ,一個 build 文件僅僅有一個 wild target ,在目前的 build 文件中,當(dāng)且僅當(dāng)被調(diào)用的 target 不存在時,才執(zhí)行 wild target ,主要用來處理無效的請求。

            ??????? Task (任務(wù))

            一塊可執(zhí)行的代碼,一個 task 可有多個特性和參數(shù)。特性的值可包含對屬性的引用,在 task 執(zhí)行前,這些引用會被解釋出來。

            ??????? Properties (屬性)

            一個 project 可有很多屬性,這些屬性可以通過 <property 任務(wù)設(shè)置在 build 文件中,也可以設(shè)置在 Nant 外。一個屬性有一個 name 和一個 value ,可用于 task 的特性中,也可用于表達式,用在 task 的特性中時,使用 ${property name} 格式。 Nant 有很多內(nèi)建屬性(與 nant 有關(guān)的,與框架有關(guān)的,與平臺有關(guān)的等)。

            <property> 任務(wù)有 readonly overwrite 等特性, readonly 指定屬性是否是只讀到,默認 false , overwirte 指定如果屬性已經(jīng)存在,屬性值是否可以重寫,默認 true ,對于只讀屬性,是不能被重寫的。注意:在 Nant 命令行指定的屬性,先于在 build 文件中指定的屬性,并且這些屬性往往是只讀的。

            另外可以在 NAnt.exe.config 文件中定義全局屬性。

            ??????? Loggers & Listeners

            Nant 通過 Loggers Listeners 來監(jiān)控連編過程。 Listeners 記錄了 build started , build finished target started , target finished , task started , task finished message logged 事件, Loggers 擴展了 Listeners ,可以按 -quiet (靜態(tài)的,平穩(wěn)的) , -verbose (詳細的) , -debug 三個層次記錄連編信息,可輸出到控制臺或者文件中。 Nant 內(nèi)建了三個類: NAnt.Core.DefaultLogger 、 NAnt.Core.MailLogger NAnt.Core.XmlLogger 。使用時: -logger :類 -logfile :文件名??梢允瞧胀ǖ牢谋疚募蛘?/span> XML 文件。

            ??????? Expressions (表達式)

            表達式是一種簡單而強大的機制,允許寫高級的公式,用于 task 的參數(shù)和條件式中,這樣就可以控制連編過程了。表達式能夠訪問 project 的屬性、調(diào)用內(nèi)建的或者用戶定義的 functions 。

            表達式通過 ${…} 符號,可用于 task 的參數(shù)中。也可以使用標準的算術(shù)、邏輯和關(guān)系運算符。通過 prefix::function-name(argument1, ..., argumentN) 語法調(diào)用函數(shù)。訪問屬性,僅需指定其 name ${…}

            例子:

            訪問屬性

            <property name="build.version" value="3" />

            <echo message="The current date is: ${build.version}" />

            調(diào)用函數(shù)

            <echo message="The current date is: ${datetime::now()}" />

            表達式結(jié)果存儲

            <property name="autoexec-present" value="${file::exists('c:\autoexec.bat')}" />

            Real-life expression use

            <property name="myprj.basedir" value="c:\" />

            <property name="filename" value="${path::combine(myprj.basedir,'version.txt')}" />

            ?

            <if test="${not file::exists(filename) or file::get-length(filename) = 0}">

            ??? <echo message="The version file ${filename} doesn't exist or is empty!" />

            </if>

            有條件執(zhí)行 task

            <property name="myprj.basedir" value="c:\" unless="property::exists('myprj.basedir')" />

            <csc target="library" output="out.dll" ...

            ???? if="${datetime::now() - file::get-last-write-time('out.dll')) > timespan::from-hours(1)}">

            ...

            </csc>

            Functions

            Nant 提供了操作字符串、日期時間和路徑名字的函數(shù),還提供讀取文件或者目錄屬性,訪問目前的連編信息等函數(shù)。

            調(diào)用函數(shù)語法 prefix::function-name(argument1, ..., argumentN) ,需要的情況下會進行參數(shù)類型轉(zhuǎn)換,如果轉(zhuǎn)換有誤,會報告錯誤。

            自定義函數(shù)可以使用任何 .Net 語言實現(xiàn),此外還可以通過 <script> 任務(wù)實現(xiàn)。

            3.????? 運行 Nant

            命令 Nant ,此外還可以指定 build 文件名、 targets properties 等。

            Nant

            NAnt -buildfile:..\fileName.build

            NAnt clean

            NAnt -D:debug=false clean dist

            posted on 2006-07-11 11:45 楊粼波 閱讀(583) 評論(0)  編輯 收藏 引用 所屬分類: 文章收藏

            久久综合成人网| 99久久国产主播综合精品| 99久久国产综合精品成人影院| 亚洲AV无一区二区三区久久| 久久久久亚洲AV成人网人人网站| 91久久精品视频| 国产免费福利体检区久久| 久久婷婷国产麻豆91天堂| 99re这里只有精品热久久| 久久国产精品99国产精| 久久精品国产亚洲av高清漫画| 久久综合给合久久狠狠狠97色69| 伊人久久精品无码av一区| 久久婷婷五月综合97色| 国产成人综合久久综合| 久久精品无码一区二区三区日韩 | 久久亚洲精品无码aⅴ大香| 久久久久se色偷偷亚洲精品av| 久久亚洲国产精品成人AV秋霞| 99精品久久精品一区二区| 久久久国产精品亚洲一区| 久久免费高清视频| 热久久国产欧美一区二区精品| 久久久久久精品无码人妻| 麻豆亚洲AV永久无码精品久久| 国产精品久久久久无码av| 久久综合五月丁香久久激情| 亚洲中文字幕无码久久精品1| 色综合久久久久无码专区| 99久久精品国产毛片| 久久人与动人物a级毛片| 久久久一本精品99久久精品66| 国产精品内射久久久久欢欢| 久久99热这里只有精品国产| 99热成人精品热久久669| 亚洲七七久久精品中文国产| 久久精品aⅴ无码中文字字幕重口| 精品久久久久久无码中文野结衣| 亚洲第一极品精品无码久久| 久久精品夜色噜噜亚洲A∨| 日韩精品久久无码人妻中文字幕|