2012-02-22 7 views
2

私はT4Scaffoldingを使用して、C#コードの生成を行っています。次のプロジェクトの構造を考えてみましょう:T4 Custom Scaffoldingをプロジェクトに使うにはどうすればいいですか?

Project structure
私はテンプレートプロジェクトにcustromのscaffolderを作成しました。今、私はダミープロジェクトのためにそれを実行したいと思いますが、私はこの例外を取得:

enter image description here

どのように私はプロジェクトの上にカスタム足場を使用することができますか?

事は:私はTFSで20のプロジェクトを持っており、t4テンプレートのコードを1つの中央の場所で管理したいと考えています。

答えて

1

私は、CodeTemplates/Scaffolders/BaseSuperModuleにあるファイルとディレクトリをダミープロジェクトにコピーし、Scaffoldコマンドを呼び出すだけでよいと思います。

編集:これは理にかなっています。カスタムt4ScaffoldingコードをNuGetパッケージに移行する方法を学ぶ途中です。私はそれがあなたのために一番うまくいくルートだと思います。私はそれを把握するとすぐに私の答えを更新します。

編集2:私はこの記事を見つけました。試してみて、私がさらに助けることができるかもしれないかどうか教えてください。私はトリックがテンプレートプロジェクトから足場を行うと、あなたは、例えばに生成するプロジェクトの名前を渡すことだと思い

http://geekswithblogs.net/michelotti/archive/2011/07/14/leverage-t4scaffolding-for-wcf-web-api.aspx

+0

TFSには20のプロジェクトがあり、t4テンプレートのコードは1つの中央の場所で管理したいと考えています。すべてのプロジェクトにデータをコピーしても機能しません。 –

+1

私の編集を参照してください... – bytebender

+0

Michelottiの記事を読んだところ、どのように強力なT4ができるのかがわかりました(それが私がt4-fuを学ぶのが大好きな理由です)。それらをパッケージにまとめることは涼しいアイデアのように聞こえるが、私は(まだ)そのようなことをどうやって行うのか考えていない。また、パブリックサーバーにこのパッケージを公開することはできません。もし私がそこに休憩所を持っていたら、私はあなたに知らせるでしょう。あなたが近づくと私に知らせてください! :-) –

1

T4Scaffolding.Scaffolder(Description = "Creates a model entity")][CmdletBinding()] 
param(
    [parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)][string]$EntityName, 
    [string]$ProjectName, 
    [string]$CodeLanguage, 
    [string[]]$TemplateFolders, 
    [switch]$Force = $false 
) 

# Find the code project, or abort 
$project = Get-Project ($ProjectName) -ErrorAction SilentlyContinue 
if (!$project) { throw "Cannot find code project corresponding to solution '$ProjectName'" } 

$entityFile = $EntityName 
Add-ProjectItemViaTemplate $entityFile -Template EntityTemplate ` 
    -Model @{ Namespace = $namespace; EntityName = $EntityName; MappingName = $MappingName } ` 
    -SuccessMessage "Added Model non-gen output at {0}" ` 
    -TemplateFolders $TemplateFolders -Project $ProjectName -CodeLanguage $CodeLanguage -Force:$false 

あなたはすでに様々なscaffoldersを適用する必要があるプロジェクトを知っていればあなたは、あなたがデフォルトを設定することができ、アドインProjectItemViaTemplatesないプロジェクトオブジェクト

で-Project引数に文字列を渡す必要がありますスキャフォルダー内のProjectNameの値。

MvcScaffoldingパッケージにはいくつかの例があります。

関連する問題