2011-12-18 15 views
0

こんにちは!以前の時代にはXMLを使ってT4を使ってVisual Studio Projectを生成するには?

それはコード・ドムを使用して可能である、私はT4を使用すると、コード・ドムよりもはるかに簡単であることを知るようになりました。私は多くの記事 を通過しましたが、依然として私の要件を満たすコードをドラフトアウトする状況にはありません。

私は自動生成されたXML文書に基づいてコードを生成する必要があります[私の要件としてXML文書を生成することができます]。

それはこのように思える:クラスの

<?xml version="1.0" encoding="utf-8" ?> 
<GeneratedSolution Name ="name of Solution"> 
<GeneratedProject ID="RepoProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company" Language="C#" OutExtension="cs"> 
<Compiler path = "../path/compilername" Build="silent" ExternalBuildTool="NAnt" /> 

<GeneratedRepository Name ="name of Repository Class" Description="This is generated Repository class would be used for overall-application" TemplateRefence ="../path/repository.tt"> 
<Operation Name = "Operation1" Description = "This is operation1 of Repository class"> 
<operationID>1</operationID> 
</Operation> 
<Operation Name = "Operation2" Description = "This is operation2 of Repository class"> 
<operationID>2</operationID> 
</Operation> 
</GeneratedRepository> 

</GeneratedProject> 

<GeneratedProject ID="BusinessProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company"> 

<GeneratedBusiness Name ="name of Business Class" Description="This is generated Business class would be used for overall-application" TemplateRefence ="../path/business.tt"> 
<Operation Name = "Operation1" Description = "This is operation1 of Business class"> 
<operationID>1</operationID> 
</Operation> 
<Operation Name = "Operation2" Description = "This is operation2 of Business class"> 
<operationID>2</operationID> 
</Operation> 
</GeneratedBusiness> 

</GeneratedProject> 

<GeneratedProject ID="UIProject" Name ="name of Project" MajorVersion="1" MinorVersion="0" CopyRight="GeneratedProject company"> 

<GeneratedUI Name ="name of UI Class" Description="This is generated UI class would be used for overall-application" TemplateRefence ="../path/UI.tt"> 
<Operation Name = "Operation1" Description = "This is operation1 of UI class"> 
<operationID>1</operationID> 
</Operation> 
<Operation Name = "Operation2" Description = "This is operation2 of UI class"> 
<operationID>2</operationID> 
</Operation> 
</GeneratedUI> 

</GeneratedProject> 

</GeneratedSolution> 

号、プロジェクトが単一のソリューション内で変えることができます。 XMLからプロジェクトを作成するアイデアを提供するいくつかの記事を読んでいますが、私は上記の「XML」サンプルのようにコードを生成するために何か必要があります。

この点に関するお手伝いをさせていただきます。

答えて

1

免責事項 - 発見された方法論だが、完全にオープンソース。

リンクされたブログでは、厳密に定義された入力データ(XMLスキーマ形式)に基づいて生成出力を制御する方法について説明しています。私たちは、T4チームのブログを通じて言及を得た - それは唯一の標準T4の使用であることを強調する:

http://blogs.msdn.com/b/t4/archive/2011/11/30/some-nice-new-getting-started-with-t4-videos.aspx

ブログの動画へのリンクはを通じて直接到達することができます:T4については

http://abstractiondev.wordpress.com/demo-videos/

経験豊富なユーザーは既にビデオを最初から始めて使い方を説明します。私は簡単なダウンロードで基本的な構造を追加する過程にあります(gitユーザーのために、gitを通してhttps://github.com/abstractiondev/absInitializerにあります)。

私の方法論のアプローチが好きで、それをあなたの世代のために使いたいのであれば、そのブログの連絡先を私に頼んでください。

+0

ありがとう!私はブログであなたに従っています。 –

+1

あなたのケースの正確なデモを追加しました:https://github.com/abstractiondev/DemoSOCase8552428ABS – Kallex

+0

本当に感謝します、ありがとうございます。それをフォークするかクローンする必要がありますか?あなたにMERRY X'MASSをお願いします:) –

0

Mono.TextTemplating(MonoDevelopの一部)を使用して、自分のアプリケーションからT4テンプレートを実行し、必要なコードの一部を生成することができます。あなたは別のアプリのアイデアが気に入らなければ、必要なすべての変換を実行するビジュアルスタジオ用のカスタムコードツールを書くことが可能です。

+0

ありがとうノヴァコフ - 確かにあなたのアイデアは良いですが、モノを使用することは適していませんまたは私たちのための良いアイデア –

+0

あなたはモノラルランタイム全体、単一のアセンブリを使用する必要はありません。 .NET 4.0ランタイムでMono.TextTemplatingを成功させました。 – Novakov

+0

ありがとう!リンクやサンプルを提供して、私が最初から使い始めることができますか? –

関連する問題