專利名稱:動態生成和編譯.net項目的方法
技術領域:
本發明涉及計算機技術領域,更具體地說,涉及.NET項目的動態生成和編譯,可應用于一切需要動態生成和編譯.NET項目的產品中。
背景技術:
在軟件的開發過程中經常需要動態生成并編譯項目,這樣可以使軟件在運行時根據具體需要靈活的生成并加載項目。目前.NET常用的生成與編譯項目的方法是利用CodeDom組件下的代碼生成與編譯接口。但是這種方法開發復雜、代碼量大,而且如果需要動態創建多個項目時,會出現很多重復的代碼開發。另外還有使用msbuild命令來編譯項目,這種方法需要在代碼里調用dos命令來執行,將軟件部署到服務后經常會遇到權限的問題。
發明內容
本發明針對現有技術的弊端,提供一種動態生成、編譯.NET項目的方法,使軟件開發人員可以簡單的實現項目的動態生成及編譯過程,并且避免重復的代碼開發工作,代碼量少,并且不依賴開發環境VisualStudio。為了解決現有方法中開發復雜、代碼量大的問題,本發明提供了一種有效的方法來使動態生成與編譯項目開發起來更加簡單、代碼量少。在介紹技術方案之前,首先介紹一下項目模板和類模板的含義,這些模板需要提前準備好。I)項目模板就是整個項目架構,就是解決方案項目的模板根據項目類型抽象出項目的文件結構及需要的項,放到項目模板的文件夾下,并將項目文件.csproj也就是解決方案文件中的內容進行修改,將可變項用參數<#param#>的方式進行替換。2)類模板,其為項目模板下的子模板根據項目中需要創建的T4模板類文件。通常類模板為.CS類文件。本發明的技術方案如下I)創建項目文件夾,復制項目模板文件夾下的文件到項目文件夾下,還要編譯。修改項目文件.csproj中的參數信息,例如項目名稱等,保存項目文件.csproj。2)系統接收Dictionary < string, string >字典類型的參數信息,讀取類模板,用參數信息替代模板中信息,形成類文件。調用文本模板宿主工具(為文本模板轉換引擎提供運行環境),根據接收的參數信息生成類文件到指定文件夾下(其在項目文件夾下)。修改.csproj文件的ItemGroup節點,在該節點下增加Compile節點,將生成的類文件添加到項目中。3)系統調用· NET提供的Engine類下的BuildProjectFile方法編譯項目,生成dll到相應文件夾。本發明采用模板方法,將項目中共有的東西及類中共有的東西均模板化,避免了codedom方式中重復的創建過程及復雜的開發過程。另一方面,根據類模板生成類文件時沒有使用TextTransform. exe工具,而是使用自己編寫的自定義文本模板宿主工具,它不依賴Visual Studio工具,這樣就降低了軟件運行對環境的要求。本發明可以獨立封裝成組件,可以應用到一切需要動態生成及編譯.net項目的軟件產品中。
圖1為本發明的流程圖,可以進一步的表明本發明的基本原理。
具體實施例方式下面結合附圖對本發明做進一步的詳細說明,以令本領域技術人員參照說明書文字能夠據以實施。如圖1所示,本發明的方法包括I)創建項目文件夾,復制模板項目文件夾中的內容到該文件夾下。2)修改項目文件· csproj。3)調用自定義文本模板宿主,讀取類模板及傳入的參數信息生成類文件。4)判斷類文件是否生成成功,如果失敗則返回項目生成失敗,如果成功則繼續。
5)通過修改項目文件.csproj添加類文件到項目中。6)編譯項目,如果編譯失敗則返回項目生成失敗,如果成功則返回項目生成成功。具體而言,本發明公開了一種動態生成和編譯.NET項目的方法,包括以下步驟步驟一、根據項目的整體架構構建項目模板和構成項目模板的類模板;步驟二、創建項目文件夾,將包括類模板在內的項目模板下的項目文件復制到項目文件夾下,并進行編譯;步驟三、系統接收參數信息,讀取項目文件夾下的類模板,調用文本模板宿主工具,并根據接收的參數信息生成類模板下的類文件到位于項目文件夾下的指定文件夾下;步驟四、修改項目文件的項目組節點,在該節點下增加編譯節點,在節點的指引下,將生成的類文件添加到項目中。所述的動態生成和編譯.NET項目的方法中,所述項目文件為.csproj類型的文件。所述的動態生成和編譯.NET項目的方法中,所述步驟一包括根據項目類型抽象出項目的文件結構及需要的項,構建成項目模板。所述的動態生成和編譯.NET項目的方法中,所述步驟二中的編譯包括將項目文件.csproj中的內容進行修改,將可變項用參數<#param#>的方式進行替換。所述的動態生成和編譯.NET項目的方法中,所述類文件為.Cs類型的文件。所述的動態生成和編譯.NET項目的方法中,將項目文件.csproj中的內容進行修改包括項目名稱的修改。所述的動態生成和編譯.NET項目的方法中,所述參數信息為字典類型的參數信
肩、O所述的動態生成和編譯.NET項目的方法中,步驟四之后還包括步驟五系統調用步驟四生成的修改后的項目文件,再編譯項目,最終生成dll到相應文件夾。盡管本發明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發明的領域,對于熟悉本領域的人員而言,可容易地實現另外的修改,因此在不背離權利要求及等同范圍所限定的一般概念下,本發明并不限于特定的細節和這里示出與描述的圖例。
權利要求
1.一種動態生成和編譯.NET項目的方法,其特征在于,包括以下步驟: 步驟一、根據項目的整體架構構建項目模板和構成項目模板的類模板; 步驟二、創建項目文件夾,將包括類模板在內的項目模板下的項目文件復制到項目文件夾下,并進行編譯; 步驟三、系統接收參數信息,讀取項目文件夾下的類模板,調用文本模板宿主工具,并根據接收的參數信息生成類模板下的類文件到位于項目文件夾下的指定文件夾下; 步驟四、修改項目文件的項目組節點,在該節點下增加編譯節點,在節點的指引下,將生成的類文件添加到項目中。
2.如權利要求1所述的動態生成和編譯.NET項目的方法,其特征在于,所述項目文件為.csproj類型的文件。
3.如權利要求1所述的動態生成和編譯.NET項目的方法,其特征在于,所述步驟一包括根據項目類型抽象出項目的文件結構及需要的項,構建成項目模板。
4.如權利要求2所述的動態生成和編譯.NET項目的方法,其特征在于,所述步驟二中的編譯包括將項目文件.csproj中的內容進行修改,將可變項用參數<#param#>的方式進行替換。
5.如權利要求1所述的動態生成和編譯.NET項目的方法,其特征在于,所述類文件為.CS類型的文件。
6.如權利要求4所述的動態生成和編譯.NET項目的方法,其特征在于,將項目文件.csproj中的內容進行修改包括項目名稱的修改。
7.如權利要求4所述的動態生成和編譯.NET項目的方法,其特征在于,所述參數信息為字典類型的參數信息。
8.如權利要求4所述的動態生成和編譯.NET項目的方法,其特征在于,步驟四之后還包括步驟五:系統調用步驟四生成的修改后的項目文件,再編譯項目,最終生成dll到相應文件夾。
全文摘要
本發明公開了一種動態生成和編譯.NET項目的方法,包括以下步驟步驟一、根據項目的整體架構構建項目模板和構成項目模板的類模板;步驟二、創建項目文件夾,將包括類模板在內的項目模板下的項目文件復制到項目文件夾下,并進行編譯;步驟三、系統接收參數信息,讀取項目文件夾下的類模板,調用文本模板宿主工具,并根據接收的參數信息生成類模板下的類文件到位于項目文件夾下的指定文件夾下;步驟四、修改項目文件的項目組節點,在該節點下增加編譯節點,在節點的指引下,將生成的類文件添加到項目中。本發明的方法使軟件開發人員可以簡單的實現項目的動態生成及編譯過程,并且避免重復的代碼開發工作,代碼量少,并且不依賴開發環境Vi sual Studio。
文檔編號G06F9/45GK103077038SQ20131004088
公開日2013年5月1日 申請日期2013年1月31日 優先權日2013年1月31日
發明者張亮, 李躍海 申請人:北京金和軟件股份有限公司