安装最新的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配置的文件丢失,所以第一步是“检查项目属性,如果您使用的是现有文件,请在代码分析选项卡中”。
现在第一个Exception消失了,但是一个新的弹出,一个非常意外的OutOfMemoryException!
在控制devenv.exe进程的情况下,我注意到它开始消耗RAM非常快(在不到1秒内从250MB到2GB!),没有科学原因:-),我尝试创建一个新的空规则集并关联它到项目,它令人难以置信地开始工作!
我希望这可以帮到你。
看起来EF6 Power Tools需要一些人的爱。在将其安装到VS2015之前,必须更改.vsix zip数据包。
这真的感觉这有很大的稳定性问题。在对主题进行了大量修改后,执行以下操作,将工具推向可重复的问题......
到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,右键单击项目>属性>目标框架。现在尝试'逆向工程CodeFirst'。
问题是该工具不会自动下载实体框架包,这会破坏默认代码分析规则集中的规则。因此,解决方法是首先手动安装Entity Framework包,然后运行Reverse Engineer Code Generator。
对我来说,它就像视觉工作室的另一个重新开始一样简单。
在我的情况下,我已经将实体框架从4.5更新到4.6,4.5.1不起作用。请按照以下步骤解决此问题。
右键单击解决方案资源管理器>属性>目标框架中的项目切换到4.5到4.6,然后重建解决方案。
只需打开项目的“属性”选项卡,并在运行“逆向工程代码优先”时保持打开状态。我不知道为什么,但它确实有效。
面对“Out of Memory”异常,尝试临时卸载解决方案中所有不相关的项目。对于复杂的数据库,将所有与EF相关的代码封装到单独的项目中,并将此项目附加到单独的解决方案,然后在需要首先运行“逆向工程代码”时使用创建的解决方案。