这是我的项目文件csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net4.6</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFramework" Version="6.2.0" />
</ItemGroup>
</Project>
在VisualStudio 2017中,我尝试添加项目“ ADO.NET实体数据模型”。当按下添加按钮VS给我一个例外......
在日志文件中我得到了这个:
===================== 2018-02-21 15:23:47 可采 System.Reflection.TargetInvocationException:调用目标引发了异常。 ---&GT; Microsoft.VisualStudio.ProjectSystem.ProjectException: 此项目项提供程序不支持项类型“EntityDeploy”。 在Microsoft.VisualStudio.ProjectSystem.ProjectErrorUtilities.ThrowProjectExceptionHelper(Exception innerException,String unformattedMessage,Object [] args) 在Microsoft.VisualStudio.ProjectSystem.ProjectErrorUtilities.ThrowProjectException(String message,Object arg0) àMicrosoft.VisualStudio.ProjectSystem.CpsProjectItem`1.d__25.MoveNext()
答案 0 :(得分:5)
This issue描述了与日志包含的相同的异常:
System.Reflection.TargetInvocationException:抛出了异常 通过调用的目标。 ---&GT; Microsoft.VisualStudio.ProjectSystem.ProjectException:项类型 此项目项提供程序不支持“EntityDeploy”。
不幸的是,它没有直接的解决方案。
总的来说,您不应期望使用新的csproj格式顺利运行EF工具。 EntityFramework6存储库中有一个discussion,它收集迁移和EF工具的一些已知问题。 EF团队有一个明确的声明,我们不应期望对这些问题进行近乎修正:
在翻转方面,在ASP.NET Core应用程序中使用EF6是 可能但需要解决方法。例如。在这种情况下,保持模型 在具有传统项目文件的单独.NET Framework库中, 从使用新项目的解决方案中卸载任何项目 系统在处理迁移时使用。
我们不愿承诺让EF6迁移完全合作 新的项目系统因为我们认为会涉及到 重大投资会阻碍我们在主要方面取得进展 战略,但也许我们可以做的事情更便宜 减少变通方法的摩擦,例如让它仍然如此 需要将EF6模型放在一个单独的项目中,但至少你不需要 需要卸载其他项目。
关于你的问题,我可以建议如下:
尝试更新到最新的Visual Studio版本。我正在使用VS 2017版本15.3.0,我没有遇到同样的问题。在模型生成和设计师工作期间,我仍然会收到自发的错误/警告消息,但最终会正确生成模型。
如果它不适合您,请考虑切换到EF团队建议的解决方法,即将EF模型保存在与传统项目文件不同的库项目中。
嗯,这些建议可能不适合完美主义者,但是(再次)所有现有的VS工具尚未完全采用新的csproj格式,而且在发生这种情况时它是未知的。
答案 1 :(得分:0)
EF6 6.4.x 现在支持 Microsoft.Net.SDK 风格的项目。
您应该注意到 EF6 仍然不知道 AutoGenerateBindingRedirects 标志。
跑步时
Add-Migrations Add_Customer_Table
如果您收到“System.IO.FileLoadException”,那么您应该手动将绑定重定向添加到 app.config 中