Visual Studio 2017中向csproj添加EF模型失败原因求助
先明确下你碰到的问题:在Visual Studio 2017里给项目的.csproj文件加ADO.NET Entity Data Model项,点「添加」就抛出异常,日志里核心报错是:
System.Reflection.TargetInvocationException: An exception was raised by the target of a call. ---> Microsoft.VisualStudio.ProjectSystem.ProjectException: The item type 'EntityDeploy' is not supported by this project item provider.
我之前帮朋友排查过一模一样的问题,结合社区经验和实际操作,给你整理了几个靠谱的解决办法:
方案1:把旧格式项目换成SDK风格
这个错误大概率出在非SDK格式的.csproj项目(比如老版的.NET Framework项目)。你右键项目选「编辑项目文件」,看看开头是不是<Project Sdk="Microsoft.NET.Sdk">——如果不是,建议迁移到SDK格式:- 先把原项目文件备份好,别搞丢了
- 新建一个同类型的SDK风格项目
- 把原项目的代码、引用、资源这些都挪到新项目里
这种方法能解决很多旧项目的兼容性坑,一劳永逸。
方案2:手动给.csproj加EntityDeploy配置
要是不想迁移项目,试试手动在.csproj里加支持EntityDeploy的配置:<PropertyGroup> <EntityDeployTarget>Embed</EntityDeployTarget> </PropertyGroup> <ItemGroup> <None Include="YourModelName.edmx"> <Generator>EntityModelCodeGenerator</Generator> <LastGenOutput>YourModelName.Designer.cs</LastGenOutput> </None> </ItemGroup>记得把
YourModelName换成你要建的实体模型名称,保存后重新加载项目,再试一次添加模型。方案3:修复VS的EF相关组件
也可能是VS里的Entity Framework工具组件损坏了:- 打开Visual Studio Installer
- 找到你装的VS2017实例,点「修改」
- 去「单个组件」里找「Entity Framework 6 工具」,要是已经勾了,先取消勾点「修改」卸载,然后再重新勾上安装
- 重启VS之后再操作试试。
方案4:清掉VS的缓存文件
有时候VS的缓存抽风也会搞出奇怪的错误:- 把所有VS窗口都关掉
- 删除这两个目录里的缓存:
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*\ComponentModelCache%USERPROFILE%\AppData\Local\Temp\VisualStudioProjectSystem
- 重新打开VS和项目,再尝试添加模型。
内容的提问来源于stack exchange,提问作者Francis

