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

问题描述 投票:16回答:9

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

救命!

entity-framework visual-studio-2015 vsix
9个回答
45
投票

VS2015的新版本:https://onedrive.live.com/?authkey=%21AP6uv8OLvM5qnmU&cid=FFD7F3DFCD5E1160&id=FFD7F3DFCD5E1160%2161967&parId=FFD7F3DFCD5E1160%2161965&action=locate

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


4
投票

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


3
投票

我不确定我的情况是否与你的100%匹配,但错误是相同的,也是前提条件。

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

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

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

我希望这可以帮到你。


1
投票

看起来EF6 Power Tools需要一些人的爱。在将其安装到VS2015之前,必须更改.vsix zip数据包。

这真的感觉这有很大的稳定性问题。在对主题进行了大量修改后,执行以下操作,将工具推向可重复的问题......

  1. 开始新项目。并将目标框架设置为4.5.1
  2. 添加app.config
  3. Install-Package entityframework -ProjectName 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,有人评论各种类似的问题,但总的来说我这个工具不稳定,不可靠,难以以稳定可重复的方式使用。


1
投票

编辑.Net Framework到4.5,右键单击项目>属性>目标框架。现在尝试'逆向工程CodeFirst'。


0
投票

问题是该工具不会自动下载实体框架包,这会破坏默认代码分析规则集中的规则。因此,解决方法是首先手动安装Entity Framework包,然后运行Reverse Engineer Code Generator。


0
投票

对我来说,它就像视觉工作室的另一个重新开始一样简单。


0
投票

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

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


0
投票

只需打开项目的“属性”选项卡,并在运行“逆向工程代码优先”时保持打开状态。我不知道为什么,但它确实有效。

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

© www.soinside.com 2019 - 2024. All rights reserved.