問題タブ [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.
asp.net-mvc - MVC T4 MvcTextTemplateHost とカスタマイズされた「コントローラー」T4 テンプレート
MVC Web アプリケーションに含まれる ADO.NET Entity Framework モデル (.edmx ファイル) と統合する独自のカスタム T4 テンプレートを作成しています。
参考のため
以下の 2 つの URL を参照してください。
- Scott Hanselman - 「T4 コード生成 Visual Studio の最高の秘密」
- Visual Web 開発者チームのブログ - ASP.NET MVC 開発者向けクイック スタート ガイド
私が達成しようとしていることの簡単な説明
T4 エンジンを使用して、ADO.NET Entity Framework モデルの主キーに基づくアクション メソッドを含む MVC コントローラー クラスを生成します。
私が今持っているもの
- MVC T4 テンプレート ファイル(Controller.tt、Create.tt など)は、MVC Web プロジェクトの一部として含まれています。
- " Models " フォルダーにADO.NET Entity Framework MyModel.edmx ファイルがあります。
コントローラー名(例: "ProductController")に基づいて、ADO.NET Entity Framework モデルから"Product"クラスの[System.Type]情報を取得したいと考えています。以下のように、MVC View T4 ファイル(Edit.tt など)と同じ方法でSystem.Type情報を取得できるようにしたいと考えています。
最終目標
リフレクションを
介して ADO.NET Entity Framework クラスから主キー情報などを読み取り
、EDIT、DETAILS、ADD 操作などの基本的な CRUD 操作とメソッド シグネチャを生成するためのコントローラー メソッド コード生成を作成したいと考えています。
私が立ち往生している場所
ただし、ASP.NET MVC 開発者向けクイック スタート ガイドの記事からわかるように、 MvcTextTemplateHostクラスはMVC ビューを作成するための ViewDataType プロパティのみを公開するため、コントローラーT4 テンプレートの[System.Type]を取得できません。
modelTypeがnullとして返されているため、次の手法で [System.Type] を取得しようとしても機能しません。つまり、型が見つかりません。
これは、Entity Framework Model が MVC Web プロジェクトの一部として含まれており、コンパイル済みの .DLL ライブラリ アセンブリの一部として含まれていないために発生すると想定しています。
解決策を見つけるのに役立ついくつかのこと
- MvcTextTemplateHostクラスのソース コードはどこにありますか? 少なくとも DLL ファイルを見つけることができれば、コードが Visual Studio の[ビューの追加] ダイアログ ウィンドウに入力されたタイプ情報をどのようにロードするかを調べることができます。
- Visual Studio プロジェクトに含まれるクラスの System.Type 情報を、Visual Studio IDE API を介して T4 テンプレートから動的に取得する方法はありますか?
これにより、ADD、EDIT、DETAILS などの MVC コントローラー アクション メソッドのコードの 75% と基本的な CRUD 操作コードを生成できるようになるため、このトピックについて誰かが私を助けてくれれば本当にありがたいです。
vb.net - ProcessTemplate メソッドを呼び出すときに VBv3.5 include ディレクティブ スローのエラーが発生する
T4 経由でコードを生成しようとしていますが、テンプレートに <#@ template language="VBv3.5"#> ディレクティブを含めると、次のエラーが表示されます。
vbc : コマンド ライン (0,0) : エラー BC2006: 変換のコンパイル: オプション 'r' には ':(file_list) が必要です
<#@ template language="C#v3.5"#> をディレクティブとして使用すると、問題なく動作します。また、コードを介して生成しようとせず、.tt ファイルを保存するだけでも、VBv3.5 ディレクティブで問題なく動作します。
これが私の t4 テンプレートです。
これが私の.NETコードです
mysql - MySQL T4テンプレートエラー:メタデータファイル「MySql.Data」が見つかりませんでした
D:\ Web \ CityV2 \ App_Code \ ActiveRecord.tt(0,0):エラーCS0006:変換のコンパイル:メタデータファイル'MySql.Data'が見つかりませんでした
まず、VWD2008Expressを使用していると言いましょう。
これまでに行った手順は次のとおりです。
- まったく新しいプロジェクトを作成しました
- Subsonic.Core.dllおよびMySql.Data.dllの参照を追加しました
- プロジェクトにActiveRecordテンプレートをコピーしました
- すべての<#@ include file = "SQLServer.ttinclude"#>を<#@ include file = "MySQL.ttinclude"#>に変更しました
- TemplateProvidersフォルダーからMySQL.ttincludeとSettings.ttincludeをコピーしました
- 私の接続文字列とデータベース情報でSettings.ttincludeを更新しました
- Settings.ttincludeを更新し、 ranomoreの指示に従って外部ツールマッピングを作成しました
- テンプレートからコードをビルドしようとしましたが、エラーが発生しました
次に、(ビンへの参照を追加したにもかかわらず)開発ボックスにMySqlコネクタが「インストール」されていないことに気付きました。そこで、MySQL.comに進み、最新の6.0.4コネクタmsiをダウンロードしてインストールしました(GAC)。エラーは表示されなくなりますが、他には何も表示されません。新しいクラス、新しいエラー、何もありません[はい、コマンドの実行後にプロジェクトを更新しました;-)]。
2つのこと:
- 私はどこかで一歩を逃していますか?
- MySQLをGACにインストールせずにテンプレートを作成する方法はありますか?
c# - T4 コード生成: 現在のプロジェクトのアクセス タイプ
T4 コード生成を使用して、現在のプロジェクトで定義されている型にアクセスできますか?
たとえば、インターフェイスがあり、その実装を別のクラスに委任したい場合、つまり
SomeClass
コード生成でコール転送を自動化したいと思います。これは可能ですか?
intellij-idea - IntelliJ IDEA の Visual Studio T4 に似たものはありますか?
外部データ (XML など) を読み取り、ソース コード ファイルを生成できるものを探しています。主な理由は、単一の定義ファイルを用意し、Visual Studio で C# コードを生成し、IntelliJ で Java コードを生成することです。
Visual Studio T4 は、ソース コードを生成するためのテンプレート エンジンです。
.net - .NET アプリケーション内から T4 テンプレートを処理できますか?
.NET アプリケーション内から T4 テンプレートを処理できますか? そのコードは呼び出すことができますか? プロジェクトに含まれていますか?ライセンス?
update : したがって、何らかの方法で VS を使用する必要があるように見えます。
.net - SubSonic 3 と複数の PK 列
SubSonic 3 と複数の主キー列に問題があります。ActiveRecord T4 スクリプトではサポートされていないようです。
Settings.ttinclude の 173 行目
単一の主キー列を取得しようとして失敗しました。
解決策はありますか?
visual-studio - Visual Studio 2008にT4コード生成がありませんか?
そこで、袖をまくり上げて、VS2008に組み込まれているT4コード生成を試してみることにしました。
私はこの記事から作業するつもりでした: http ://www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/
それで、私はこの部分に行きます:「メインメニューでプロジェクト->新しいアイテムを追加し、ダイアログでコード生成->ファイルテンプレートを選択します。」そして、コード生成カテゴリが私のマシンにないことを発見します。(VBプロジェクトとC#プロジェクトの両方で試してみました)。
あなたのマシンにT4をインストールするための別のダウンロードはおそらくありますか?
アップデート#1
そこで、CodePlexからT4 Toolboxをダウンロードしました: http ://t4toolbox.codeplex.com/Release/ProjectReleases.aspx?ReleaseId = 27563
そして、物事は今整理されているようです。VS2005ではダウンロードが必要でしたが、VS2008ではダウンロードが必要ではないという印象を受けました。まあ、とにかく新しいリリースのように見えるので、ダウンロードする価値があるでしょう。
アップデート#2
記事に示されているすべてのテンプレートタイプを持っているわけではないようです。私はファイル、テンプレート、ジェネレーター、ユニットテストのみを持っています「ジェネレーター」は記事にリストされていません、そして私が持っていない記事には3つあります。変....
subsonic - SubSonic 3.0.0.2 Structs.tt
私が得ているエラーは、Structs.tt ファイルから出ているようです。私は Northwind データベースを使用しており、Products テーブルのみを使用しています (他のテーブルはすべて除外しました)。Json(Product.All()) を返します。
エラーは次のとおりです。
「SubSonic.Schema.DatabaseColumn」タイプのオブジェクトをシリアル化中に循環参照が検出されました。スタック トレースは次のとおりです。
System.InvalidOperationException はユーザー コードによって処理されませんでした Source="System.Web.Extensions" StackTrace: System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal (Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) で System.Web.Script.Serialization.JavaScriptSerializer. SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat) at System.Web.脚本。
visual-studio-2008 - Subsonic のインストール - テキスト テンプレートを追加しても何も起こらない
Subsonic (v3) の使用を開始しようとしています。簡単なインストール手順には、次のことを行う必要があることが示されています。
- DLL への参照を追加する = 完了
- Setting.ttinclude を編集して正しい接続文字列を使用する = 完了; appsettings を web.config に追加しました
- テンプレートをプロジェクトに追加 = 完了しましたが、何も生成されません。エラーもコードもありません。
デモは、ファイルを追加すると、適切な .vb/.cs クラスが作成されるか、いくつかのエラーが生成されることを示していますが、何も得られず、テンプレートを含むフォルダーだけが得られます。
私は T4 テンプレートに関しては全くの初心者です。実際、今までそれらが存在することを知りませんでした (!)。
何かご意見は?これは基本的なものでなければなりません。これはとても単純なはずです。
参考までに: 私は VS Professional 2008 を使用しています。VS Express でも同様の問題が発生する可能性があることは理解しています。