Visual Studio 2015 Update 2打破了EF反向代码工程师vsix



安装最新的Visual Studio 2015 Update 2后,EF powertools反向代码工程选项失败,并显示以下错误消息。

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安装程序版本。

救命!

VS2015的新:https://onedrive.live.com/?authkey=%21AP6uv8OLvM5qnmU&cid=FFD7F3DFCD5E1160&id=FFD7F3DFCD5E1160%2161967&parId=FFD7F3DFCD5E1160%21645&动作=定位

更新2之后:右键单击解决方案资源管理器>属性>目标框架中的项目,切换回4.5.1,然后重建解决方案。现在运行反向工程工具。在我的案例中,运行正常

我真的不确定我的案例是否100%匹配您,但错误是相同的,也是前提条件。

我最初的"罪过"是为CodeAnalysis配置的文件丢失,所以第一步是"如果您使用的是现有文件,请在代码分析选项卡上检查项目属性"。

现在,第一个异常消失了,但又弹出了一个新的异常,这是一个非常意外的OutOfMemoryException!

在控制devenv.exe进程的过程中,我注意到它开始非常快地消耗RAM(在不到1秒的时间内从250MB到2GB!),没有任何科学原因:-),我尝试创建一个新的空规则集并将其与项目关联,它令人难以置信地重新开始工作!!

我希望这能帮助你。

将项目设置为启动项目帮助我克服了这个错误。

看起来EF6电动工具需要一些人的爱。在将.vsix zip数据包安装到VS2015中之前,必须对其进行更改,这是有据可查的。

感觉这确实存在严重的稳定性问题。在对一个主题进行了大量更改之后,执行以下操作,将该工具推向可重复的问题。。。

  1. 启动新项目。并将目标框架设定为4.5.1
  2. 添加app.config
  3. 安装包实体框架-项目名称MYPROJ
  4. [RIGHT-CLICK][实体框架][逆向工程代码优先(RECF)]
  5. 选择并连接数据库这是可重复的,没有任何问题,再次开球(RECF)和agian在这个阶段可重复工作。

  6. [RIGHT-CLICK][实体框架][自定义逆向工程模板]并添加到.t文件中。重复步骤4 RECF可重复工作。

  7. 现在用非常简单的方法更改context.tt,例如简单地添加//评论

到context.tt的顶部导致步骤4 RECF过程始终失败。重新启动VS2015并重新启动盒子,仍然无法使步骤4-RECF再次工作。

删除项目并重新开始,似乎可以使RECF过程正常工作,但一旦我导入tt,然后对.tt进行更改,那么输出中就会出现不同问题的螺旋上升。。。

任一

内存不足,无法继续执行程序#

尝试编译转换代码时引发异常

处理模板"Entity.tt"时出现一个或多个错误。错误:尝试编译转换代码时引发异常。引发了以下异常:System.ArgumentException:空路径名不合法。

在此资源中,
https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d,有人评论各种类似的问题,但总的来说,我这个工具不稳定,不可靠,很难以稳定可重复的方式使用。

将.Net Framework编辑为4.5,右键单击项目>属性>目标框架。现在尝试"逆向工程代码优先"。

只需打开项目的"属性"选项卡,并在运行"逆向工程代码优先"时保持打开状态。我不知道确切的原因,但它是有效的。

面对"内存不足"异常,请尝试临时卸载解决方案中所有不相关的项目。对于复杂的数据库,将所有与EF相关的代码封装到单独的项目中,并将此项目附加到单独的解决方案中,然后在需要运行"反向工程代码优先"时使用创建的解决方案。

问题是该工具不会自动下载实体框架包,这违反了默认代码分析规则集中的规则。因此,解决方法是首先手动安装实体框架包,然后运行逆向工程代码生成器。

对我来说,这就像重新启动visualstudio一样简单。

在我的案例中,我已经将实体框架从4.5更新到4.6,4.5.1不起作用。请按照以下步骤解决此问题。

右键单击解决方案资源管理器>属性>目标框架中的项目,切换到4.5到4.6,然后重建解决方案。

最新更新