2016-04-06 8 views
4

「EntityFramework Reverse POCO Code First Generator」を使用したいが、VSからプログラムではない。EntityFrameworkをPOCOコードファーストジェネレータ(T4)をプログラムによって逆実行できますか?

 Engine engine = new Engine(); 
     TemplatingHost host = new TemplatingHost(System.Text.Encoding.UTF32); 
     host.IncludeFileSearchPaths.Add(@"D:\IncludeFiles"); 

     string templateFileName = "some template"; 
     // NOTE: Doesn't actually seem to care about the name of the template file? True, but does use the path to search for stuff. 
     host.TemplateFile = templateFileName; 
     string input = File.ReadAllText(@"D:\IncludeFiles\T4Files\Database.tt"); 
     string output = engine.ProcessTemplate(input, host); 
     File.WriteAllText(@"D:\IncludeFiles\T4Files\Output.txt", output); 

     StringBuilder sb = new StringBuilder(); 
     foreach (CompilerError error in host.Errors) 
     { 
      sb.AppendLine(error.ToString()); 
     } 

     File.WriteAllText(@"D:\IncludeFiles\T4Files\ErrorLog.txt", sb.ToString()); 

:私はC#のコードから、この目的のためにT4を実行したい実際に EntityFramework Reverse POCO Code Github

は 私は、このようないくつかのコードを書いた Simple T4 Engine

この目的のために、単純な-T4-エンジンをダウンロードしかし、いくつかのエラーが出る(Output.txtが空です)

ErrorLog.txt:

error : Running transformation: System.InvalidCastException: Unable to cast transparent proxy to type 'System.IServiceProvider'. 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetDTE() 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetCurrentProject() 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetConfigPaths() 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetConnectionString(String& connectionStringName, String& providerName, String& configFilePath) 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.InitConnectionString() 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.GetDbProviderFactory() 
    at Microsoft.VisualStudio.TextTemplating31A64EBEAB614B57E81A1789EC7637709A091834D5CA991E8A2195B15E2A0DFF588B0C98DCEDA8AD6902329A28B09556BDE2A9BEDFA48812CCC12CA1E68AA1C9.GeneratedTextTransformation.TransformText() 

誰でもこの問題を解決できますか? またはをより良い方法で導入する実行の場合Database.tt実行時にC#でプログラムで実行します。

Database.tt

  • EF.Reverse.POCO.Core.ttinclude
  • EF.Reverse.POCO.ttinclude
  • EF.Utility.CS.ttinclude
  • EF6.Utility .CS.ttinclude
  • GenerateTSQL.Utility.ttinclude

答えて

5

私はEntity Framework Reverse POCO Generatorの著者です。

残念ながら、このコードはVisual Studioの外部で実行することはできません。 EnvDTEは、リバースジェネレータがVisual Studioプロジェクトから生成されたファイルを追加/削除する機能を提供します。これがなければ、それは仕事をすることができなくなります。

他の人は、ビルドサーバーで実行できるかどうかを尋ねてきました。ただし、ビルドサーバーはリバースエンジニアリングに必要なデータベースにアクセスできない場合があります。常にtt設定ファイルを保存してコードを生成し、生成されたコードをソース管理にコミットし、そこからビルドサーバーにコミットします。

ところで、私はこのプロジェクトをVisual Studio以外で自動化したり、他の製品に組み込んだりすることは望ましくありません。これはライセンスに規定されています。

+1

ツールに感謝していますが、私はライセンスに関するご意見に戸惑うことがあります。これはApache 2.0として配布されており、修正、派生、配布などが可能です。クイックレビューの後、私はライセンスの制限について言及していません。Apache 2.0に基づいて、誰もが自動化のためのブロッカーこのユーティリティ。 – STW

+1

...これを研究した後、あなたはAPL 2.0(VisualStudioGallery.com経由)と修正APL 2.0(GitHub経由)の両方でこれを公開したようです。私の感覚は、変更されたAPL 2.0は有効ではない可能性が高いということです。通常、Apacheは完全にde-brandingしなくてもライセンスを変更することはできません(変更後にApacheのライセンスとすることはできません)。 VS Galleryを介して在庫APL 2.0として配布されているので、プラグインのこれらのバージョンは明らかに変更と再配布が可能です。 – STW

+1

ええ、残念ながら、私はあなたがApache 2.0を要求できるとは思わないと思います。ライセンスを変更したので、もうApache 2ライセンスではありません。 –

-1

TextTransform Utilityを使用すると、Visual Studio以外のT4ファイルを変換できます。通常は、フォルダ内のutil見つけることができます:

\Program Files\Common Files\Microsoft Shared\TextTemplating\ 

私はこれがあなたの問題このツールの詳細を調査し、問題が合うかどうか確認してくださいするためのスタートだと思います。

+0

このT4ファイルはVisual StudioのDTE環境に明示的に依存するという問題があります。したがって、多くの/ほとんどがVisual Studioの外で簡単に実行できますが、この特定のものは実行できません。 – STW

関連する問題