この T4 テンプレートは初めてです。私が知っているのは、これらのテンプレートが LINQ to SQL クラス モデル (.dbml ファイル) からエンティティ クラスを生成するということだけです。Visual Studio 2010 で実行されるこのシステムがあります。
Visual Studio 2015 に移行すると、問題が発生します。エンティティ/テーブルに新しい列を追加したいと考えています。カスタムツールを実行すると、このエラーが表示されます
「T4Toolbox.XsdProcessor」という名前のプロセッサが、「xsd」という名前のディレクティブに対して見つかりませんでした。変換は実行されません。次の例外がスローされました: System.IO.FileNotFoundException: ディレクティブ プロセッサ T4Toolbox.XsdProcessor の型を解決できませんでした。
以下はテンプレートです。
<#@ template hostspecific="True" debug="true" #>
<#@ xsd processor="T4Toolbox.XsdProcessor" file="%VS100COMNTOOLS%\..\..\Xml\Schemas\DbmlSchema.xsd" #>
<#@ output extension="log" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ include file="T4Toolbox.tt" #>
<#
@ include file="..\..\..\Framework\Templates\LinqToSql.tt" #>
// <copyright file="Script1.tt" company="">
// Copyright © . All Rights Reserved.
// </copyright>
// Generate entity classes from a LINQ to SQL class model (.dbml file)
NXpertGenerator generator = new NXpertGenerator();
generator.DbmlFile = "..\\..\\NXpert.Accounting.DataAccess\\Accounting.dbml";
generator.ConnectionStringKey = "AccountingDB2";
generator.DbmlNamespace = "NXpert.Accounting.DataAccess";
generator.UsingStatements = new List<string>{"NXpert.Core", "NXpert.Accounting", "NXpert.Accounting.DataAccess", "System.Data.Linq"};
generator.ClassMappings = new List<ObjectDescriptor>{
new ObjectDescriptor{
Name = "BalanceSheet",
NamePlural = "BalanceSheets",
EntityName = "BalanceSheetEntity",
Properties = new List<PropertyDescriptor>{
new PropertyDescriptor{ Name = "Status", ConvertType = "CommonStatus" },
new PropertyDescriptor{ Name = "CreatedDate", ConvertType = "DateTime" },
new PropertyDescriptor{ Name = "UpdatedDate", ConvertType = "DateTime" }
}
}
};
generator.Run();
#>
行を削除しようとしました
<#@ xsd processor="T4Toolbox.XsdProcessor" file="%VS100COMNTOOLS%\..\..\Xml\Schemas\DbmlSchema.xsd" #>
このエラーは
コンパイル変換: 型または名前空間名 'Association' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) コンパイル変換: 型または名前空間名 'Database' が見つかりませんでした (using ディレクティブがありませんか?)またはアセンブリ参照?)
この種のエラーは、追加するのを忘れたのは単なる名前空間であることを示しています。しかし、このテンプレートも Visual Studio 2010 で完全に動作しています。
これらのテンプレートを VS2015 で実行するには、いくつかの設定/手順を実行する必要があります。私にお知らせください。
この問題の解決策やアイデアを共有していただければ幸いです。