我正在开发一个使用EntityFramework的C#程序,我已经从git repo克隆了该程序,但是现在它出现了可怕的Metadata file 'EntityFramework.dll' could not be found
错误。对于这种问题,我已经搜索并尝试了无数建议,但没有一个奏效。我已经检查过EntityFramework.dll
文件中对.csproj
的引用是否正确,并且绝对在packages\EntityFramework.6.2.0\lib\net45\
文件夹下。所以我不确定还有什么尝试。
答案 0 :(得分:0)
请查看bin文件夹,有时dll不存在。
答案 1 :(得分:0)
在Visual Studio顶部,单击“生成”->“配置管理器”。确保已选中项目旁边的生成复选框。如果已经存在,请取消选中它,然后再次选中它。清理您的解决方案并在此之后再次构建。
答案 2 :(得分:0)
通常在团队检入不应检入的文件(例如.suo文件)或“优化”其构建以排除很少更改的项目时发生。 (取消配置管理器中的项目。)
丢失引用的另一个常见原因是开发人员从/ bin文件夹而不是packages文件夹引用了依赖项,但是听起来您已经确认不是这种情况。
其他问题,例如Metadata file '.dll' could not be found列出了许多要检查的内容,因此您的问题肯定是其中之一。尝试分别构建每个项目,从没有项目依赖性的项目向上扩展到主要应用程序项目。确保它们运行的是相同的.Net版本,检查解决方案的NuGet程序包是否具有“多个版本”的依赖项,并将其合并,以使解决方案使用每个依赖项的单个版本。 (通常对清理很有帮助)。另外,请查看.config文件中的版本重定向,这些重定向有时在源代码管理中会变得僵化。
答案 3 :(得分:0)
好的,我已经解决了这个问题。这是发生了什么事。显然,克隆到本地目录时,路径中的一个文件夹的名称中带有空格(例如My DSS
),而这个nuget issue似乎表明nuget无法在其中查找带有空格的软件包。路径。因此,一旦我将该文件夹的名称更改为MyDSS
,它就会成功编译。