2

共通のアセンブリ情報を提供するために、それぞれの言語で多数のプロジェクトにリンクされている .cs ファイルと .vb ファイルがあります。それぞれをテンプレートに移動することで、T4 でそれらの間の共通の側面を設定したいと思います。

AssemblyInfo.csAssemblyInfo.vb出力ファイル名である必要があります。ただし、通常、これらのいずれかの T4 テンプレートの名前はAssemblyInfo.tt.

まったく同じ名前の T4 テンプレートを 2 つ持つことはできないので、拡張子だけが異なる 2 つのファイルを出力するにはどうすればよいですか?

多くの異なるプロジェクトからファイルのリンクを解除してから、再度リンクし直さなければ、ファイルの名前を変更して書き込むことはできないので、それは問題外です。

テンプレートに異なる名前を付けることができるように、出力ファイル名を手動で指定するために使用できる何らかのディレクティブはありますか?

4

3 に答える 3

0

それよりもはるかに簡単です。目的のファイル名に .tt を追加して、次を使用します。

<#@ output extension=""#> 

client_stubs.h.tt

<#@ output extension="" encoding="utf-8"#>
<#@ include file="Common.t4" #>

class client_stubs
{
<#
    foreach (string member in class_members.Keys)
    {
#>
    int <#=member#>;
<#
    }
#>
}

client_stubs.cpp.tt

<#@ output extension="" encoding="utf-8"#>
<#@ include file="Common.t4" #>
#include "client_stubs.h"
<#
    foreach (string member in class_members.Keys)
    {
#>
    int client_stubs::<#=member#> = <#=class_members[member]#>;
<#
    }
#>

Common.t4

<#@ template language="C#" #>
<#@ import namespace="System.Collections.Generic" #>
Dictionary<string, string> class_members = new Dictionary() {
    {"m_first", "1"},
    {"m_second", "2"}
};
于 2015-04-28T23:46:53.287 に答える
0

同じディレクトリにさらに .ttN ファイルを配置するだけです。そして、各 .ttN ファイル内の拡張子を調整します。

AppResources.tt     <#@ output extension=".resx" #>
AppResources.tt2    <#@ output extension=".de.resx" #>
AppResources.tt3    <#@ output extension=".nl.resx" #>
于 2015-03-25T16:51:05.757 に答える