Visual Studio Entity Framework 5.0 インクルード ファイル (EF.Utility.CS.ttinclude) にあるクラスを、一連の標準 C# クラスに変換しました。なぜそうしたのかは重要ではありません。そうするのには十分な理由があり、私が達成したいことを達成するための他の方法はないと言えば十分です. 提供された t4 テンプレート (EF の標準 DbContext を生成するテンプレート) を使用してクラスをテストしようとすると、次のエラーが発生します。
Error 1 Running transformation: System.IO.FileNotFoundException: Could not load file or assembly 'EFUtilities_5_0_DeConstruct, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'EFUtilities_5_0_DeConstruct, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at System.UnitySerializationHolder.GetRealObject(StreamingContext context)
at System.IServiceProvider.GetService(Type serviceType)
at EFUtilities_5_0_DeConstruct.EntityFrameworkTemplateFileManager.Create(Object textTransformation) in c:\Users\Sam\Documents\Visual Studio 2012\Projects\EFExplorer_5\EFUtilities_5_0_DeConstruct\EntityFrameworkTemplateFileManager.cs:line 29
at Microsoft.VisualStudio.TextTemplating6F3E7F749A9B7F1589040546E2B00865752CC91ED5490722E3718CB7A5DDD503FF97964710FBB3EBF135630FF50F8F2A8EA8FA5AA531EC2449158E3D60FD019D.GeneratedTextTransformation.TransformText()
このエラーは、Visual Studio 2012 Premium で、標準の Entity Framework データ プロジェクトが追加されたプロジェクトを作成した後、データベースから構築されたモデルが生成されたときに発生します (データベースには、特に何もない単一のテーブルがあります - 主キー、いくつかのテスト列) Build|Transform all T4 メニュー オプションを選択します (Model1.tt ファイルを選択して [Run Custom Tool] を選択した場合にも発生します)。Model1.tt (名前はデフォルトで割り当てられた名前) ファイルが失敗し、Model1.Context.tt ファイルは正常に実行されます。両方のテンプレートは、結果のクラスが格納される DeConstruct アセンブリへの追加の参照と共に、EF.Utility.CS.ttinclude ファイル (実際にはカット アンド ペースト) と同じアセンブリおよびインポート句を含むように変更されています。このソリューションは、"Debug" の標準のデバッグ場所、"Release" の運用ディレクトリ (C:\T4\EF_5_0\Assembiles) にコンパイルされます。Model1.tt ファイルが両方の場所を指すように設定しようとしましたが、同じエラーが発生します。
問題のある行は、エラーで示されているとおりです。DTE dte = (DTE)hostServiceProvider.GetService(typeof(DTE));
envDTE アセンブリは、参照とクラスの using 句に追加されます。
これらすべてのキッカーは、Visual Studio 2010 で EF 4.3.1 EF.Utility.CS.ttinclude ファイルと対応する 4.3 DbContext ジェネレーター ファイルを使用してこれを成功させたことです。など.だから... VS2012だけでEF 5.0だけでこのエラーが表示される理由についての手がかりはありますか? 私が試していないことの 1 つは、EF 5.0 を VS2010 環境に導入することです。作業環境を汚染したくなかったのです。