最新のVisual Studio 2015 Update 2をインストールした後、EF電源ツールのリバースコードエンジニアオプションが失敗し、次のエラーメッセージが表示されます。
One or more errors occurred while processing template 'Entity.tt'.
error : An exception was thrown while trying to compile the transformation code. The following Exception was thrown:
System.ArgumentException: Empty path name is not legal.
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.File.OpenRead(String path)
at Roslyn.Utilities.FileUtilities.OpenFileStream(String path)
at Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(String path, MetadataReferenceProperties properties, DocumentationProvider documentation)
at Microsoft.VisualStudio.TextTemplating.CompilerBridge.<>c.<.ctor>b__15_0(String x)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Linq.Enumerable.<UnionIterator>d__66`1.MoveNext()
at System.Linq.Enumerable.<UnionIterator>d__66`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)
at Microsoft.CodeAnalysis.ImmutableArrayExtensions.AsImmutableOrEmpty[T](IEnumerable`1 items)
at Microsoft.CodeAnalysis.Compilation.ValidateReferences[T](IEnumerable`1 references)
at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.WithReferences(IEnumerable`1 references)
at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CommonWithReferences(IEnumerable`1 newReferences)
at Microsoft.VisualStudio.TextTemplating.CompilerBridge.PrepareNewCompilation()
at Microsoft.VisualStudio.TextTemplating.CompilerBridge.Compile()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.Compile(String source, String inputFile, IEnumerable`1 references, Boolean debug, SupportedLanguage language, String compilerOptions)
Julie Lermansリンクからツールをアンインストールして再インストールし、修正されたVS 2015 vsixインストーラーバージョンを取得しようとしました。
助けて!
更新後2:ソリューションエクスプローラー>プロパティ>ターゲットフレームワークでプロジェクトを右クリックして、4.5.1に切り替え、ソリューションを再ビルドします。リバースエンジニアリングツールを今すぐ実行します。私のものでは正しく機能しました
私のケースがあなたの100%に一致するかどうかは本当にわかりませんが、エラーは同じであり、前提条件も同じです。
私の元の「罪」は、CodeAnalysis用に構成されたファイルが欠落していたため、最初のステップは "既存のファイルを使用している場合は、[コード分析]タブの[プロジェクトプロパティ]で確認してください"です。
これで最初の例外は消えましたが、新しい例外が飛び出しました。本当に予期しないOutOfMemoryExceptionです!
Devenv.exeプロセスを制御下に置くと、この時点で消費が急増していることに気づきましたRAMこの時点で、250MBから2GBに1秒未満!)科学的な理由なし:-)、私新しい空のルールセットを作成してプロジェクトに関連付けてみましたが、信じられないほど再び動作し始めました!!
これがお役に立てば幸いです。
プロジェクトをスタートアッププロジェクトとして設定すると、このエラーを回避するのに役立ちました。
EF6パワーツールは誰かからの愛を必要とするようです。十分に文書化されており、VS2015にインストールする前に.vsix Zipパケットを変更する必要があります。
これには重大な安定性の問題があるようです。テーマに多くのバリエーションを加えた後、次のようにして、ツールを繰り返し可能な問題にプッシュします...
選択と接続およびデータベースこれは問題なく再現性があり、キックアウト(RECF)が再び行われ、この段階でアジャンが繰り返し作動します。
[RIGHT-CLICK] [Entity Framework] [Customize Reverse Engineer Templates]をクリックし、.tファイルに追加します。手順4を繰り返すRECFは繰り返し動作します。
今、context.ttを非常に簡単に変更します。 //コメントを追加するだけ
context.ttの先頭に移動すると、ステップ4のRECFプロシージャが常に失敗します。 VS2015を再起動してボックスを再起動しても、ステップ4-RECFが再び機能することはありません。
プロジェクトを削除して再度開始すると、RECFプロセスが機能するようになりますが、ttをインポートして.ttに変更を加えるとすぐに、出力にさまざまな問題が発生します...
どちらか
プログラムの実行を続行するにはメモリが不足しています#
OR
変換コードをコンパイルしようとしたときに例外がスローされました
OR
テンプレート 'Entity.tt'の処理中に1つ以上のエラーが発生しました。 error:変換コードをコンパイルしようとしたときに例外がスローされました。次の例外がスローされました:System.ArgumentException:空のパス名は無効です。
このリソースでは、
https://visualstudiogallery.msdn.Microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d 、さまざまな同様の問題にコメントしている人がいますが、全体的に私はこのツールが不安定で信頼できません安定した再現性のある方法で使用することは困難です。
プロジェクトの[Properties]タブを開き、「Reverse Engineering Code First」を実行している間は開いたままにします。なぜなのか正確にはわかりませんが、うまくいきます。
「メモリ不足」の例外が発生した場合は、ソリューション内の無関係なプロジェクトをすべて一時的にアンロードしてみてください。複雑なデータベースの場合、すべてのEF関連コードをカプセル化して個別のプロジェクトに追加し、このプロジェクトを個別のソリューションに接続します。次に、「リバースエンジニアリングコードを最初に」実行する必要がある場合は、作成したソリューションを使用します。
.Net Frameworkを4.5に編集します。これを行うには、プロジェクト>プロパティ>ターゲットフレームワークを右クリックします。次に、「Reverse Engineer CodeFirst」を試してください。
問題は、ツールEntity Frameworkを自動的にダウンロードしないパッケージであり、デフォルトのコード分析ルールセットのルールに違反することです。したがって、回避策は最初にEntity Frameworkを手動でインストールするパッケージで、その後リバースエンジニアコードジェネレーターを実行します。
私の場合、エンティティフレームワークを4.5から4.6に更新しましたが、4.5.1が機能しませんでした。この問題を修正するには、次の手順に従ってください。
[ソリューションエクスプローラー]> [プロパティ]> [ターゲットフレームワーク]でプロジェクトを右クリックして、4.5から4.6に切り替え、ソリューションを再ビルドします。
私にとっては、ビジュアルスタジオを再開するのと同じくらい簡単でした。