4

(.tt) T4 テンプレートにリソース ファイル (.resx) を含める方法がわかりません。

これまでに試した... 名前空間のインポート

<#@ import namespace="T4TemplateResources.resx" #>

クラスも含めて

4

4 に答える 4

2

リソース (.resx) から読み取り、リソースの JSON 結果を含む JS ファイルを作成するサンプル T4 テンプレート コード:

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="$(TargetPath)" #>
<#@ assembly name="System.Windows.Forms" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Resources" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".js" #>
<# 
    var path = Path.GetDirectoryName(Host.TemplateFile);
    var resourceNames = new string[1]
    {
        "Resources"
    };
#>
var $.Resources = {
<# foreach ( var name in resourceNames ) {
    var localeFile = Host.ResolvePath(path + "\\" + name + ".resx");
    ResXResourceSet jpResxSet = new ResXResourceSet(localeFile);
#>
<# foreach (DictionaryEntry item in jpResxSet) { #>
    '<#=item.Key.ToString()#>' : '<#= ("" + item.Value).Replace("\r\n", string.Empty).Replace("'", "\\'")#>',
<# } #>
<# } #>
};

Jochen van Wylick の功績: .resx ファイルに基づく JavaScript リソースのローカライズに T4 を使用

于 2015-04-24T00:26:45.323 に答える
0

T4 テンプレート内から .​​resx ファイルのリソースにアクセスする場合は、次のようにします。

  1. リソース エディタで、リソースのアクセス修飾子を「パブリック」に設定します。
  2. プロジェクトが正常にビルドされることを確認してください。t4 テンプレートは出力アセンブリにしかアクセスできないため、最新かどうかを確認してください。
  3. T4 テンプレートで出力アセンブリを参照します (ここで Visual Studio マクロを使用できます)。<#@ assembly name="$(TargetDir)\outputfile.ext" #>
  4. T4 テンプレートに ResourceFile の名前空間をインポートする<#@ import namespace="MyNamespace" #>

その後、通常どおりリソースにアクセスできます。

<# var theResource = Resource1.TheResource; #>
于 2013-04-15T06:20:26.033 に答える