問題タブ [t4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4446 参照

.net - VS2010 で C# 4.0 を使用するように T4 (テキスト テンプレート) を指定するにはどうすればよいですか?

C# 4.0 を使用して tt ファイルをレンダリングするには、T4 を指定する必要がありますか? 使ってみた

しかし、このように動的変数を使用すると

これらのエラーが発生しています

また、私は TextTemplatingFileGenerator とNot pre-processor テンプレートを使用していることに注意してください

0 投票する
1 に答える
529 参照

subsonic - SubSonic T4 テンプレートで生成されたコードを更新するにはどうすればよいですか?

SubSonic 3 を使い始めたばかりで、ActiveRecord T4 テンプレートを使用しています。

データベースに変更を加えた場合 (テーブルに列を追加するなど)、T4 テンプレートによって生成されたコードを強制的に再生成する正しい方法は何ですか?

現時点では、プロジェクトの ActiveRecord フォルダーを削除してから、テンプレート フォルダーを再びドラッグしています。もっと良い方法があるはずですか?

アップデート:

以下のSkinniest Manの回答に加えて、Visual Studio 2008ソリューションエクスプローラーの上部にある「すべてのテンプレートを変換」というアイコンにも気付きました。これにより、現在選択されているプロジェクトで見つかったすべてのテンプレートからコードが生成されます。

0 投票する
3 に答える
3634 参照

c# - 厳密に型指定された AppSettings クラスを自動生成する

最初の質問は次のとおりです。

これは可能ですか?Joe Wrobel の作品(忘れられたCodeplex プロジェクトのリダックス)からインスピレーションを得ています。ここでは、プロバイダーのプロファイルを作成する作業を行います。これにより、プロバイダーの厳密な型指定を作成する作業が行われ、Profile クラスのファサードが効果的に作成されます。

そしていよいよ裏話!

私は魔法の糸が本当に好きではありません。それらは非常に悪いものであり、アプリケーションの更新に関して深刻な問題を引き起こす可能性があります。PHP や ColdFusion などの言語で働いてきた経験から、それらをアプリケーションに組み込むと、変更が必要になるまで忘れてしまいがちであることを私は知っています。そして、それらのすべてのバリエーションを探し出し、それに応じて変更する必要があります。

.NET は、「すぐに使える」アプリケーション テンプレートに従っている場合、それほど優れているとは言えません。多くの例では、web.config の appsettings を使用してさまざまな設定を保存しています。これは実際に保存するのに最適な場所であり、ほとんどのアプリケーションに最適です。ただし、これらを直接呼び出し始めると、問題が発生し始めます。たとえば、ConfigurationManager.AppSettings["MyAppSetting"]. その後、魔法の文字列を使用するようになるため、PHP ユーザーよりもはるかに優れているとは言えません。

ここでファサードの出番です。ファサードは、マジック ストリングから厳密に型指定されたオブジェクトを 1 か所で作成し、開発者がそれをアプリケーションの残りの部分から参照できるようにする方法を提供します。

今では、web.config を使用して appsettings を含める代わりに、データベースを使用してそれらすべてを保持しています。アプリケーションの開始時に、名前と値の組み合わせが取得され、順番にConfigurationManager.AppSettingsviaに追加されSetます。大したことはありません(私が以前に抱えていた問題は別として!)。

この「アプリケーション ファサード」は、データ レイヤー、サービス レイヤー、およびプレゼンテーション レイヤーからアクセスでき、アプリケーション モードなどを保持します。どのサービス エンドポイントが yada yada yada を使用するか、多くのマジック ストリングを探す必要性を 2 つのマジックに制限します文字列 - 1 つ (名前) はファサードにあり、もう 1 つ (名前と値) は作成時点 (私にとってはデータベース) にあります。

このファサード クラスは最終的にかなり大きくなり、最終的には両方を更新しなければならないことにうんざりするでしょう。

だから私がやりたいのは、ビルドが完了するたびに自動生成される ApplicationFacade クラスを持つことです。そして今、最初に戻ります...これは可能ですか?

0 投票する
2 に答える
8601 参照

c# - C#からプログラムでT4を使用できますか?

私はC#コードを生成するソフトウェアを書いています。ほとんどの場合、 StringTemplateとStringBuilderを使用しています。

コードから直接T4テンプレートを使用する方法はありますか?

0 投票する
2 に答える
2350 参照

c# - XML ファイルが変更されたときに、Visual Studio 2008 で T4 テンプレートからコードを再生成するように強制するにはどうすればよいですか?

1 つの XML ファイルから大量のコードを生成していますが、テンプレートは 2 つの異なる T4 テンプレートに編成されています。XML ファイルを変更するときはいつでも、2 つのファイルを開き、*.tt簡単に変更 (スペースを追加または削除) し、再度保存して、コードが確実に生成されるようにする必要があります。

これは正しい方法ではありません。

理想的には、XML ファイルが変更された場合に、Visual Studio 2008 が T4 ファイルに対してテキスト変換を行うようにしたいと考えています。Visual Studio が C# プロジェクトをどのように構築するのかよくわからないので、少し迷っています。そのため、その方向へのポインターも役立ちます (その後、自分で理解しようとすることができます)。

0 投票する
22 に答える
69459 参照

visual-studio - VisualStudioにすべてのビルドでT4テンプレートを実行させる

ビルドごとに出力を生成するT4テンプレートを取得するにはどうすればよいですか?現在のように、テンプレートに変更を加えた場合にのみ再生成されます。

私はこれに似た他の質問を見つけました:

Visual StudioでのT4変換とビルド順序(未回答)

Visual Studioでビルドするt4ファイルを取得するにはどうすればよいですか?(回答は[まだ十分に複雑ですが]十分に詳細ではなく、完全に意味がありません)

これを行うには、もっと簡単な方法が必要です。

0 投票する
3 に答える
991 参照

asp.net-mvc - ASP.NETMVC用のSparkT4テンプレート

すぐに使用できるWebフォームビューテンプレート(作成、編集、詳細など)に一致する/類似するSparkT4テンプレートが既に存在するかどうかだけ知りたいと思いました。私のGoogleのスキルは、私を結果に導きませんでした。

0 投票する
1 に答える
1033 参照

c# - TextTransform.exe は古いバージョンの C# のみを受け入れるようです

Visual Studio 内で T4 テンプレートを展開すると、LINQ 式などを含む完全な C# 3.0 構文を使用できます。TextTransform.exe を使用して Visual Studio の外で展開すると、LINQ 式や C# 3.0 のその他の新機能について不平を言います。TextTransform.exe の新しいバージョンはありますか?

私が実行しているものは次のとおりです。

0 投票する
2 に答える
3019 参照

.net - T4MVC を使用した部分ビュー パスの指定

ASP.NET MVC プロジェクトで T4MVC を使用しています。

私の見解では、次のような声明があります。

以前は次のようでした。

以前は正常に動作していましたが、T4MVC を使用して部分ビューを指定した後、その部分ビューを見つけることができません。

デフォルトの動作である以下のパスでそれを見つけようとしています。

T4MVC を使用して、他のコントローラーのビュー フォルダーにある部分ビューを指定する方法はありますか? または私が何をしていても、それは正しいですか? 私は何が欠けていますか?

ありがとう。

0 投票する
2 に答える
1926 参照

c# - シンプルで実用的なC#コード生成(VS 2008または2010)

ビルドプロセスに複雑さが生じることを恐れて、ビルドプロセスの一部として生成されたコードの使用を延期しました。

ビルド時に生成されたコードをアプリに統合する簡単な方法はありますか?

私が考えているコードの種類は、VisualStudioが実行するリソースおよび設定ファイルのコード生成に似ています。

  • ここにインテリセンスがあることは価値があります
  • 説明するのは簡単ですが、C#で簡潔に実装することは不可能な多くのプロパティとプロパティ間のリンクがあります。
  • 基盤となるリソースは変更可能であり、ユーザーの操作やジェネレーターの内部を理解する必要なしに、コードが自動的に再生成されます。

(非現実的な)例として、同様の名前のC#プロパティ(またはメソッド)を介して正規表現の名前付きキャプチャグループへのアクセサーを生成したプリコンパイラーを考えてみます。これは私が生成したい種類のものの典型です:主な機能がエラーのコンパイル時チェックを可能にすることであるボイラープレートラッパーの長いスニペット(上記;存在しないキャプチャグループへのアクセスまたは書き込みと無効な正規表現)それほど重要ではありませんが、これらのプロパティのインテリセンス。最後に、この設定はチームの他のメンバーが簡単に使用できる必要があります最小限の学習曲線しかありません。つまり、コードを再生成するために手動の介入を要求することも、生成されたコードをソース管理にコミットすることも絶対に受け入れられません。最悪の場合、誰もが何らかの拡張機能をインストールする必要があります。理想的には、拡張機能はソースツリーにインストール可能である必要があります。これにより、ツリーをチェックアウトする人は誰でも、紹介なしでプロジェクトをビルドできます。

それがうまく機能するためには、IDE統合が優れていることが重要です。基になる「リソース」定義ファイルを更新すると 、ユーザーの操作なしでコードの再生成がトリガーされます。理想的には、ジェネレーター自体は、後で他の開発者が簡単に保守できるようになります。 (つまり、ある程度のジェネレーターのデバッグ機能はプラスです)。

最後に、同じテンプレートをさまざまな入力リソースに適用できるXSLTのようなアプローチが理想的です。これは、リソースを更新するだけの場合は実際のジェネレーターコードを確認する必要がないことと、テンプレートの再利用が簡単になることの両方を意味します。

T4を見てきましたが、これは、テンプレートとリソースが完全に分割されていない、あまり便利ではないASPのようなアプローチです(つまり、ジェネレーターがリソースの検索を担当します。これにより、テンプレートの再利用が容易になりません。 )。

同じテンプレートを簡単に再利用でき、(.NET設定ファイルのように)リソースを更新すると実装されたコードの再生成が自動的にトリガーされるような、より優れた(よりクリーンな)ソリューションまたはT4を実行する方法はありますか?

要約: 私はできるコード生成アプローチを探しています

  1. 基盤となるリソース(テンプレートではありません!)が変更されたときに、開発者の介入なしにコードを自動的に再生成します。
  2. メンテナンスがやや簡単
  3. 複数のリソース間で同じジェネレーターテンプレートを共有できるようにします(これは、ポイント#1では、リソースがジェネレーターを参照する必要があり、その逆ではないことを意味します)。