2

Oleg Sych が T4 でいくつかのコードを生成すると言ったように、私はテンプレート - ジェネレーター アーキテクトを使用しますが、Unicode の使用にはいくつかの問題があります。

これは私のファイルです: テンプレート:

<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
<#@ assembly name="Microsoft.SqlServer.Smo" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="System.Collections.Generic" #>
<#+
public class DALTable : Template
{

    public override string TransformText()
    {

        //My Template

    }

発生器:

<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
<#@ assembly name="Microsoft.SqlServer.Smo" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
<#@ include file="DALTable.tt" #>
<#+
public class TableDALGenerator : Generator
{
    public DALTable DALTableTemplate = new DALTable();

    protected override void RunCore()
{
        this.DALTableTemplate.Table = table;
        this.DALTableTemplate.RenderToFile("DAL.cs");
    }
 }

そしてスクリプト:

<#@ template language="C#v4" hostspecific="True" debug="True" #>
<#@ assembly name="System.Core" #>
<#@ output extension=".cs" encoding="UTF8" #>
<#@ include file="T4Toolbox.tt" #>
<#@ include file="TableDALGenerator.tt" #>
<#
    TableDALGenerator TableDALGen = new TableDALGenerator();
    //Pass Parameters
    TableORMGen.Run();
#>

Oleg Sych が言ったように、この行でわかるように、出力に Unicode を設定しました:<#@ output extension=".cs" encoding="UTF8" #>また、この 3 つのファイルすべてを Unicode で保存しますutf8 が、問題はまだ残っています。どこに問題がありますか? 私がそれをしなければならない他に何が残っていますか?

アップデート

新しく生成されたファイル (DAL.cs) は、UTF8すべてがANSIエンコードによって保存されているため、保存されていないことがわかりました。UTF8ファイルをエンコードして保存するにはどうすればよいですか?

4

2 に答える 2

2

この<#@outputディレクティブは、T4 ファイルの直接出力に適用されます。出力がUTF8になるようにテンプレートを変更する必要があります

public class DALTable : Template 
{ 
    public DALTable()
    {
        Output.Encoding = System.Text.Encoding.UTF8;
    } 

    public override string TransformText() 
    ...
于 2012-07-31T13:36:18.600 に答える