麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

動態(tài)生成和編譯.net項(xiàng)目的方法

文檔序號:6398999閱讀:192來源:國知局
專利名稱:動態(tài)生成和編譯.net項(xiàng)目的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地說,涉及.NET項(xiàng)目的動態(tài)生成和編譯,可應(yīng)用于一切需要動態(tài)生成和編譯.NET項(xiàng)目的產(chǎn)品中。
背景技術(shù)
在軟件的開發(fā)過程中經(jīng)常需要動態(tài)生成并編譯項(xiàng)目,這樣可以使軟件在運(yùn)行時根據(jù)具體需要靈活的生成并加載項(xiàng)目。目前.NET常用的生成與編譯項(xiàng)目的方法是利用CodeDom組件下的代碼生成與編譯接口。但是這種方法開發(fā)復(fù)雜、代碼量大,而且如果需要動態(tài)創(chuàng)建多個項(xiàng)目時,會出現(xiàn)很多重復(fù)的代碼開發(fā)。另外還有使用msbuild命令來編譯項(xiàng)目,這種方法需要在代碼里調(diào)用dos命令來執(zhí)行,將軟件部署到服務(wù)后經(jīng)常會遇到權(quán)限的問題。

發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術(shù)的弊端,提供一種動態(tài)生成、編譯.NET項(xiàng)目的方法,使軟件開發(fā)人員可以簡單的實(shí)現(xiàn)項(xiàng)目的動態(tài)生成及編譯過程,并且避免重復(fù)的代碼開發(fā)工作,代碼量少,并且不依賴開發(fā)環(huán)境VisualStudio。為了解決現(xiàn)有方法中開發(fā)復(fù)雜、代碼量大的問題,本發(fā)明提供了一種有效的方法來使動態(tài)生成與編譯項(xiàng)目開發(fā)起來更加簡單、代碼量少。在介紹技術(shù)方案之前,首先介紹一下項(xiàng)目模板和類模板的含義,這些模板需要提前準(zhǔn)備好。I)項(xiàng)目模板就是整個項(xiàng)目架構(gòu),就是解決方案項(xiàng)目的模板根據(jù)項(xiàng)目類型抽象出項(xiàng)目的文件結(jié)構(gòu)及需要的項(xiàng),放到項(xiàng)目模板的文件夾下,并將項(xiàng)目文件.csproj也就是解決方案文件中的內(nèi)容進(jìn)行修改,將可變項(xiàng)用參數(shù)<#param#>的方式進(jìn)行替換。2)類模板,其為項(xiàng)目模板下的子模板根據(jù)項(xiàng)目中需要創(chuàng)建的T4模板類文件。通常類模板為.CS類文件。本發(fā)明的技術(shù)方案如下I)創(chuàng)建項(xiàng)目文件夾,復(fù)制項(xiàng)目模板文件夾下的文件到項(xiàng)目文件夾下,還要編譯。修改項(xiàng)目文件.csproj中的參數(shù)信息,例如項(xiàng)目名稱等,保存項(xiàng)目文件.csproj。2)系統(tǒng)接收Dictionary < string, string >字典類型的參數(shù)信息,讀取類模板,用參數(shù)信息替代模板中信息,形成類文件。調(diào)用文本模板宿主工具(為文本模板轉(zhuǎn)換引擎提供運(yùn)行環(huán)境),根據(jù)接收的參數(shù)信息生成類文件到指定文件夾下(其在項(xiàng)目文件夾下)。修改.csproj文件的ItemGroup節(jié)點(diǎn),在該節(jié)點(diǎn)下增加Compile節(jié)點(diǎn),將生成的類文件添加到項(xiàng)目中。3)系統(tǒng)調(diào)用· NET提供的Engine類下的BuildProjectFile方法編譯項(xiàng)目,生成dll到相應(yīng)文件夾。本發(fā)明采用模板方法,將項(xiàng)目中共有的東西及類中共有的東西均模板化,避免了codedom方式中重復(fù)的創(chuàng)建過程及復(fù)雜的開發(fā)過程。另一方面,根據(jù)類模板生成類文件時沒有使用TextTransform. exe工具,而是使用自己編寫的自定義文本模板宿主工具,它不依賴Visual Studio工具,這樣就降低了軟件運(yùn)行對環(huán)境的要求。本發(fā)明可以獨(dú)立封裝成組件,可以應(yīng)用到一切需要動態(tài)生成及編譯.net項(xiàng)目的軟件產(chǎn)品中。


圖1為本發(fā)明的流程圖,可以進(jìn)一步的表明本發(fā)明的基本原理。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)說明,以令本領(lǐng)域技術(shù)人員參照說明書文字能夠據(jù)以實(shí)施。如圖1所示,本發(fā)明的方法包括I)創(chuàng)建項(xiàng)目文件夾,復(fù)制模板項(xiàng)目文件夾中的內(nèi)容到該文件夾下。2)修改項(xiàng)目文件· csproj。3)調(diào)用自定義文本模板宿主,讀取類模板及傳入的參數(shù)信息生成類文件。4)判斷類文件是否生成成功,如果失敗則返回項(xiàng)目生成失敗,如果成功則繼續(xù)。
5)通過修改項(xiàng)目文件.csproj添加類文件到項(xiàng)目中。6)編譯項(xiàng)目,如果編譯失敗則返回項(xiàng)目生成失敗,如果成功則返回項(xiàng)目生成成功。具體而言,本發(fā)明公開了一種動態(tài)生成和編譯.NET項(xiàng)目的方法,包括以下步驟步驟一、根據(jù)項(xiàng)目的整體架構(gòu)構(gòu)建項(xiàng)目模板和構(gòu)成項(xiàng)目模板的類模板;步驟二、創(chuàng)建項(xiàng)目文件夾,將包括類模板在內(nèi)的項(xiàng)目模板下的項(xiàng)目文件復(fù)制到項(xiàng)目文件夾下,并進(jìn)行編譯;步驟三、系統(tǒng)接收參數(shù)信息,讀取項(xiàng)目文件夾下的類模板,調(diào)用文本模板宿主工具,并根據(jù)接收的參數(shù)信息生成類模板下的類文件到位于項(xiàng)目文件夾下的指定文件夾下;步驟四、修改項(xiàng)目文件的項(xiàng)目組節(jié)點(diǎn),在該節(jié)點(diǎn)下增加編譯節(jié)點(diǎn),在節(jié)點(diǎn)的指引下,將生成的類文件添加到項(xiàng)目中。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,所述項(xiàng)目文件為.csproj類型的文件。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,所述步驟一包括根據(jù)項(xiàng)目類型抽象出項(xiàng)目的文件結(jié)構(gòu)及需要的項(xiàng),構(gòu)建成項(xiàng)目模板。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,所述步驟二中的編譯包括將項(xiàng)目文件.csproj中的內(nèi)容進(jìn)行修改,將可變項(xiàng)用參數(shù)<#param#>的方式進(jìn)行替換。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,所述類文件為.Cs類型的文件。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,將項(xiàng)目文件.csproj中的內(nèi)容進(jìn)行修改包括項(xiàng)目名稱的修改。所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,所述參數(shù)信息為字典類型的參數(shù)信
肩、O所述的動態(tài)生成和編譯.NET項(xiàng)目的方法中,步驟四之后還包括步驟五系統(tǒng)調(diào)用步驟四生成的修改后的項(xiàng)目文件,再編譯項(xiàng)目,最終生成dll到相應(yīng)文件夾。盡管本發(fā)明的實(shí)施方案已公開如上,但其并不僅僅限于說明書和實(shí)施方式中所列運(yùn)用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實(shí)現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細(xì)節(jié)和這里示出與描述的圖例。
權(quán)利要求
1.一種動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,包括以下步驟: 步驟一、根據(jù)項(xiàng)目的整體架構(gòu)構(gòu)建項(xiàng)目模板和構(gòu)成項(xiàng)目模板的類模板; 步驟二、創(chuàng)建項(xiàng)目文件夾,將包括類模板在內(nèi)的項(xiàng)目模板下的項(xiàng)目文件復(fù)制到項(xiàng)目文件夾下,并進(jìn)行編譯; 步驟三、系統(tǒng)接收參數(shù)信息,讀取項(xiàng)目文件夾下的類模板,調(diào)用文本模板宿主工具,并根據(jù)接收的參數(shù)信息生成類模板下的類文件到位于項(xiàng)目文件夾下的指定文件夾下; 步驟四、修改項(xiàng)目文件的項(xiàng)目組節(jié)點(diǎn),在該節(jié)點(diǎn)下增加編譯節(jié)點(diǎn),在節(jié)點(diǎn)的指引下,將生成的類文件添加到項(xiàng)目中。
2.如權(quán)利要求1所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,所述項(xiàng)目文件為.csproj類型的文件。
3.如權(quán)利要求1所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,所述步驟一包括根據(jù)項(xiàng)目類型抽象出項(xiàng)目的文件結(jié)構(gòu)及需要的項(xiàng),構(gòu)建成項(xiàng)目模板。
4.如權(quán)利要求2所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,所述步驟二中的編譯包括將項(xiàng)目文件.csproj中的內(nèi)容進(jìn)行修改,將可變項(xiàng)用參數(shù)<#param#>的方式進(jìn)行替換。
5.如權(quán)利要求1所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,所述類文件為.CS類型的文件。
6.如權(quán)利要求4所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,將項(xiàng)目文件.csproj中的內(nèi)容進(jìn)行修改包括項(xiàng)目名稱的修改。
7.如權(quán)利要求4所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,所述參數(shù)信息為字典類型的參數(shù)信息。
8.如權(quán)利要求4所述的動態(tài)生成和編譯.NET項(xiàng)目的方法,其特征在于,步驟四之后還包括步驟五:系統(tǒng)調(diào)用步驟四生成的修改后的項(xiàng)目文件,再編譯項(xiàng)目,最終生成dll到相應(yīng)文件夾。
全文摘要
本發(fā)明公開了一種動態(tài)生成和編譯.NET項(xiàng)目的方法,包括以下步驟步驟一、根據(jù)項(xiàng)目的整體架構(gòu)構(gòu)建項(xiàng)目模板和構(gòu)成項(xiàng)目模板的類模板;步驟二、創(chuàng)建項(xiàng)目文件夾,將包括類模板在內(nèi)的項(xiàng)目模板下的項(xiàng)目文件復(fù)制到項(xiàng)目文件夾下,并進(jìn)行編譯;步驟三、系統(tǒng)接收參數(shù)信息,讀取項(xiàng)目文件夾下的類模板,調(diào)用文本模板宿主工具,并根據(jù)接收的參數(shù)信息生成類模板下的類文件到位于項(xiàng)目文件夾下的指定文件夾下;步驟四、修改項(xiàng)目文件的項(xiàng)目組節(jié)點(diǎn),在該節(jié)點(diǎn)下增加編譯節(jié)點(diǎn),在節(jié)點(diǎn)的指引下,將生成的類文件添加到項(xiàng)目中。本發(fā)明的方法使軟件開發(fā)人員可以簡單的實(shí)現(xiàn)項(xiàng)目的動態(tài)生成及編譯過程,并且避免重復(fù)的代碼開發(fā)工作,代碼量少,并且不依賴開發(fā)環(huán)境Vi sual Studio。
文檔編號G06F9/45GK103077038SQ20131004088
公開日2013年5月1日 申請日期2013年1月31日 優(yōu)先權(quán)日2013年1月31日
發(fā)明者張亮, 李躍海 申請人:北京金和軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
主站蜘蛛池模板: 唐海县| 平乐县| 辽阳市| 云霄县| 咸丰县| 志丹县| 岳池县| 木兰县| 白银市| 贺兰县| 长沙县| 临潭县| 都昌县| 西贡区| 安丘市| 清苑县| 马尔康县| 南丰县| 易门县| 张家界市| 临桂县| 安西县| 纳雍县| 江津市| 孝昌县| 兴化市| 铅山县| 子长县| 左贡县| 海安县| 格尔木市| 吉木乃县| 龙江县| 时尚| 右玉县| 广德县| 孝昌县| 尉氏县| 城市| 东台市| 尼玛县|