1

Visual Studio 2010 で WCF サービス (ファイル形式 .svc) を作成する際に、C# 分離コード ファイル (.svc.cs) を T4 ファイル (.tt) に変換したいと考えています。可能であれば、どうすればこれを行うことができますか?

編集: クライアントではなく、WCF サービス自体を作成していることに注意してください。

4

2 に答える 2

1

質問の明確化に基づいて回答を更新しました。

service.svc.cs ファイルをテンプレート化する場合は、次のようにします。

  • service.svc.cs ファイルを開き、.TT 拡張子として保存します。これにより、svc.cs ファイルが自動的に消去されます (クラスが定義されているためだと思います)。

  • ビルド アクションが「コンテンツ」に設定されていることを確認します。

  • service.svc.tt ファイルのカスタム ビルド オプションが TextTemplatingFileGenerator であることを確認します。

  • TT スクリプトに使用する言語タイプを Reference.tt ファイルの先頭に追加します (明示的に指定することをお勧めします)。

    <#@ template language="C#" #>

  • .tt ファイルが開いている間はいつでも [保存] をクリックして、出力 cs ファイルを (再) 生成します。

これらの手順が新しい WCF サービス プロジェクトで機能することを確認しました。

余分なトリック:

Visual Studio 2010 を使用しているため、テンプレートのカスタム ツールを TextTemplatingFileGenerator から TextTemplatingFilePreprocessor に一時的に変更することもできます。

これにより、通常のテンプレート出力ではなく、基礎となるコードがプロジェクトに直接吐き出されます! 生成されたコードを確認するのに最適です。

于 2012-05-11T10:37:03.507 に答える
1

この答えは正しいですが、質問に対するものではありません!

質問を明確にしていただきありがとうございます。新しい回答が追加されました-これは移動/削除されます:)

理論的には、TT ファイルを使用して任意のタイプのテキスト ファイルを生成できます。これを使用して、データベース スクリプト、構成ファイルなどを生成します (Microsoft はあらゆる種類のプロキシ生成に使用します)。

問題は、サービス参照の Reference.cs ファイルも最初に生成されるため、そのプロセスも停止する必要があることです。

  • ソリューション ブラウザーで [すべてのファイルを表示] ボタンをクリックします。これにより、基になる Reference.cs ファイルが公開されます。

  • reference.cs ファイルを開き、.TT 拡張子として保存します。次の手順で .cs ファイルが消えるため、これを最初に行う必要があります。

  • 新しい Reference.tt ファイルをプロジェクトに含めます。

  • Reference.svcmap ファイルから「WCF Proxy Generator」カスタム ツール オプションを削除します。

  • ソース管理下にある場合は、保留中の Reference.cs ファイルの削除を元に戻します。この削除は、前の手順によって自動的に行われます。

  • Reference.tt ファイルのカスタム ビルド オプションが であることを確認しますTextTemplatingFileGeneratorcs ファイルの名前を変更すると、デフォルトでこれが追加されます

  • TT スクリプトに使用する言語タイプを Reference.tt ファイルの先頭に追加します (明示的に指定することをお勧めします)。

    <#@ template language="C#" #>

余分なトリック:

Visual Studio 2010 を使用しているため、テンプレートのカスタム ツールを TextTemplatingFileGenerator から TextTemplatingFilePreprocessor に一時的に変更することもできます。

これにより、通常のテンプレート出力ではなく、基礎となるコードがプロジェクトに直接吐き出されます! 生成されたコードを確認するのに最適です。

注: 出力として .CS ファイルを使用しない場合は、スクリプトの最初のエントリで出力ファイル名も指定する必要があります。たとえば、TT ファイルの先頭に必要な最小値は次のようになります。

<#@ template language="C#" #>
<#@ output extension="config" #>
于 2012-05-11T08:46:25.813 に答える