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

16
安装了最新的Visual Studio 2015 Update 2之后,EF Power Tools反向代码工程师选项会出现以下错误信息。
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安装程序版本。

求助!


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - ErikEJ
1
谢谢。好的,这是一个可行的替代方案,但我现在正在使用一个已有的代码库,所以我需要考虑对系统造成的影响。这是一个明显的备选方案,如果没有很快的解决办法我会采用它。虽然我也许能够通过 VS 2013 重新生成它。谢谢。 - richardb
9个回答

44

链接已经失效了...这个文件还能在其他地方找到吗? - Tony Shepherd
6
将项目切换到.NET 4.5.1对我很有帮助。要在VS2015上安装最新的EF Power Tools,请按照此链接操作:link - Kohen Holms
8
我的项目是建立在.NET 4.5上的,将它切换到4.5.1版本就解决了问题! - K0D4
这对我也起作用了,我已经好几年没有使用过这些工具了,需要重新学习。我发现简单地降低目标框架版本就可以解决这个问题。我还使用了反向poco生成器,以获取最佳的快照,后者仍在积极开发中。 - IbrarMumtaz
我正在使用Power Tools的V6 Beta 5版本,这个解决方案有效。 - DDiVita
显示剩余4条评论

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

4

我不确定我的情况是否完全符合你的,但错误和前提条件是相同的。

我的原始“罪过”是CodeAnalysis配置文件丢失,所以第一步是“在项目属性中检查Code analysis选项卡是否使用现有文件”。

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

控制devenv.exe进程后,我注意到它开始迅速消耗内存(从250MB到少于1秒钟内的2GB!)此时,没有科学依据:-),我尝试创建一个新的空规则集并将其与项目相关联,它难以置信地再次开始工作!

希望这可以帮助到您。


一些模型被生成了,但是DbSet名称和导航属性都是以复数形式命名的,尽管复数约定已经被移除了。 - Gene R
1
这是因为Update 2删除了您PC上的任何版本的"EF.Utility.CS.ttinclude"并替换为全新的版本,该版本完全不同。我解决这种问题的方法(因为我使用EF)始终是将项目中使用的任何ttcinclude硬拷贝,以确保任何进一步的“重新生成”都会独立于所使用的VS重用相同的代码库。 - MonDeveloper

1

将您的.Net Framework编辑为4.5,方法是右键单击项目 > 属性 > 目标框架。现在尝试“反向工程 CodeFirst”。


1
看起来EF6 Power Tools需要有人来关注一下。 已经有很好的文档说明了在安装到VS2015之前必须更改.vsix zip包。
这似乎存在着显著的稳定性问题。 在主题上进行多次变化后,按照以下步骤,可以重复出现问题...
1. 开始新项目并将目标框架设置为4.5.1 2. 添加app.config 3. Install-Package entityframework -ProjectName MYPROJ 4. [右键][Entity Framework][Reverse Engineer Code First (RECF)] 5. 选择连接和数据库。这个阶段可以重复工作,并且再次重复(RECF)也可以正常工作。 6. [右键][Entity Framework][Customise Reverse Engineer Templates]并添加.t文件。 7. 重复步骤4,RECF可以重复工作。 8. 现在非常简单地更改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
只需打开项目的“属性”选项卡,并在运行“反向工程代码优先”时保持其打开。我不知道为什么,但它有效。
遇到“内存不足”的异常,请尝试临时卸载解决方案中所有与该项目无关的项目。对于复杂的数据库,请将所有与EF相关的代码封装到一个单独的项目中,并将此项目附加到单独的解决方案中,然后在需要运行“反向工程代码优先”时使用创建的解决方案。

0
问题在于该工具不会自动下载Entity Framework软件包,这违反了默认的代码分析规则集中的规则。因此,解决方法是首先手动安装Entity Framework软件包,然后再运行反向工程代码生成器。

1
项目中已经有了EF包,在应用Update 2之前,我可以很好地进行再生成。EF包仍然存在。 - richardb
我的项目也已经添加了EntityFramework.dll,并且在安装了VS2015 Update 1后,使用EF Power Tools工具运行良好。 - Brett Rigby

0
对我来说,这只是另一个重新启动 Visual Studio 的简单操作。

0
在我的情况下,我将实体框架从4.5升级到了4.6,但4.5.1无法正常工作。 按照以下步骤修复此问题。
在解决方案资源管理器中,右键单击项目 > 属性 > 目标框架切换到4.5至4.6,然后重新构建解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接