元数据文件未找到 - Data.Entity.Model

16

有没有遇到创建 Web 服务时出现类似问题的人?

编译转换时:找不到元数据文件 'D:\Program Files\VS2013\Common7\Tools..\IDE\Microsoft.Data.Entity.Design.dll' D:\PROJEKTY\apki\ws2\WS\WS\DataModel.tt

错误截图

我尝试了重新添加数据模型、重启 VS、清理和构建解决方案、创建新项目、删除和添加引用、安装最新版本。我认为互联网上找到的任何解决方案对我都无效。

有什么建议吗?我想把文件粘贴到这个目录中,但不知道里面可能会有什么。


很不幸,我已经安装了Web Dev Tools和SQL Server 2012。但是我在你建议的位置上没有这个文件。我在我的自定义VS位置中有来自Data.Entity的文件,其中一个名为Design.Extensibility的文件似乎已经在项目中正确引用了。我尝试将缺失的.dll文件复制到项目的某些位置,但它并没有起作用。它的位置是:D:\Program Files\Visual Studio 13\Common7\IDE\我还尝试更改连接字符串: metadata=res://*/|res://*/|res://*/;provider=我将尝试硬引用,但我担心DataModel.tt所需的位置是硬编码的。 - ignacy130
是的,硬引用没起作用 : / - ignacy130
我也将缺失的文件粘贴到了 D:\Program Files\VS2013\Common7\Tools\IDE,但是它没有起作用... //对于多次发布我感到抱歉 - ignacy130
那么,缺失的dll文件放在哪里了(即你正在从哪里复制它)?对我来说,你的安装可能已经损坏了,因为你似乎没有把所有所需的文件放在正确的位置。该文件应该位于类似“c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE”文件夹中。它被ttinclude文件引用如下:<#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #>。如果你的VS120COMNTOOLS变量指向错误的文件夹,事情将无法正常工作。 - Pawel
看了这个链接:http://stackoverflow.com/questions/19791278/error-when-generating-databe-from-model-in-visual-studio-2013 我有一种感觉,这可能是EF Designer/VS中的一个真正的bug,但我们目前还无法重现它。 - Pawel
显示剩余4条评论
9个回答

26

基于

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude

,代码生成器正在以下位置寻找缺失的DLL:

<#@ assembly name="%VS120COMNTOOLS%..\IDE\EntityFramework.dll" #>
<#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #>
我发现环境变量%VS120COMNTOOLS%与Visual Studio的正确安装路径不兼容,所以我从“高级系统属性”中更改了它,然后它就起作用了。

你在哪里可以找到这些“高级系统属性”?我想看看这个修复程序是否适用于我的问题。谢谢。 - Louis Sherwood
2
抱歉 @LouisSherwood,让你久等了。你可以从 Windows "系统属性" 对话框的 "高级" 选项卡底部的按钮中修改 "环境变量"。查看这个图片 - modeeb
我在使用Visual Studio 2013 Professional时成功了。我的路径指向的是C:\Program Files (x86)\Common7\Tools,但正确的目录(对我来说)应该是C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools。 - SeanOB
是的,看起来我将VS的非默认安装到另一个驱动器上也遇到了同样的问题。只需要更新变量,重新启动VS,它就开始工作了。谢谢! - TravisWhidden
这最终为我解决了问题,我最初将VS安装在D:\中,通过将其更改为我的C:\,解决了我的问题! - Zorgarath

6
  1. 检查你的安装位置。我把VS安装到了默认 C:\ 以外的位置 D:\,所以出现了错误。
  2. 修改 "环境变量" 到你的位置,对于我来说,这意味着将 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ 改为 D:\Microsoft Visual Studio 12.0\Common7\Tools\
  3. 不要忘记在单词结尾添加一个 \ 符号。

4

我相信重新将 VS 安装到不同的驱动器时,VS 没有正确更新 VS120COMNTOOLS 变量。详见此 SO 串


1

我不确定为什么会出现这种情况。我的一个同事在尝试从我们正在使用的共同服务器中的模型生成数据库时遇到了此问题。我用自己电脑的登录尝试了一次,第一次成功了,然后再试一次就出现了相同的错误。我只是做了一个

devenv /resetsetting

在VS 2013命令提示符中运行它是有效的。在我的同事机器上也尝试了相同的操作,也起作用了。不确定它是否有效,但值得一试。

修复了错误的环境变量后,这个命令就能正常工作了。 - vothaison

1
问题在于文件EF6.Utility.CS.ttinclude最初是错误的。即使变量%VS120COMNTOOLS%的值是正确的,错误仍然会发生。
以下行中的两个愚蠢点(%VS120COMNTOOLS%..\IDE)应受责备。
<#@ assembly name="%VS120COMNTOOLS%..\IDE\EntityFramework.dll" #>
<#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #>

如果这是修复错误的方法,那么错误就不会再出现了:
<#@ assembly name="%VS120COMNTOOLS%\IDE\EntityFramework.dll" #>
<#@ assembly name="%VS120COMNTOOLS%\IDE\Microsoft.Data.Entity.Design.dll" #>

当然,变量%VS120COMNTOOLS%必须具有正确的值。

这个问题很老了,但答案仍然是相关的,因为这个错误仍然存在于VS2015中。以下是来自不幸文件的几行:

<#@ assembly name="%VS140COMNTOOLS%..\IDE\EntityFramework.dll" #>
<#@ assembly name="%VS140COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #>

抱歉。

0
大家好,我在处理我的应用程序时遇到了这个错误,我所做的是: 1. 回滚实体所在的解决方案/模块, 2. 移除%VS110COMN% 这样代码就会变成这样。
<#@ assembly name="..\IDE\EntityFramework.dll" #>
<#@ assembly name="..\IDE\Microsoft.Data.Entity.Design.dll" #>

0

我知道回答这个问题有点晚了,但是。

按照以下步骤对我有效。

  1. 从现有的abc.tt文件中复制代码。
  2. 删除abc.tt文件。
  3. 再次将所有代码复制到ABC.tt文件中。

复制代码后,只需保存文件并构建解决方案,它将重新生成完整的.cs文件。


0

这对我有用。

  1. C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude

  2. 使用Visual Studio进行编辑。

  3. 删除URL后面的两个点,使新行变为:

    <#@ assembly name="%VS120COMNTOOLS%\IDE\EntityFramework.dll" #>
    <#@ assembly name="%VS120COMNTOOLS%\IDE\Microsoft.Data.Entity.Design.dll" #>
    
  4. 将环境变量设置为以IDE目录之前的文件夹结尾。在我的情况下是:

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\
    
  5. 重新构建项目或删除实体框架并重新创建。


-1

试试这个:

  1. 双击 .edmx 模型。
  2. 在“实体数据模型设计器”上任意位置右击。
  3. 点击“从数据库更新模型”。
  4. 点击完成。

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