Mono 上的 MVC 5:无法加载文件或程序集“System.Web.Entity”或其依赖项之一

Posted

技术标签:

【中文标题】Mono 上的 MVC 5:无法加载文件或程序集“System.Web.Entity”或其依赖项之一【英文标题】:MVC 5 on Mono: Could not load file or assembly 'System.Web.Entity' or one of its dependencies 【发布时间】:2015-02-04 05:49:16 【问题描述】:

目标:通过 Xamarain Studio 在 Mono 上启动一个 ASP.NET MVC 5 项目。

启动服务器后出错: Could not load file or assembly 'System.Web.Entity' or one of its dependencies.

Xamarin Studio 中的错误:

背景:该项目是在 Visual Studio 2013 中作为默认 Web 项目创建的。大多数配置都是开箱即用的。它的代码可以是viewed here on GitHub。在撰写本文时,我拥有最新最好的 Mono 和 Xamarin Studio。 .NET Entity Framework 是一个已解决的依赖项,Xamarin Studio 中没有发现任何生成问题。

如何启动并运行此项目?如何解决这种依赖关系?

【问题讨论】:

您只需要该 dll 的副本(从 Windows 获取)。 这个 DLL 没有包含在 Mono 框架中是否有原因? @Jester 我应该将这个 dll 粘贴到哪个位置? 【参考方案1】:

我知道这是一个旧线程,但我在开始将 MVC 项目从 VS for windows 移植到 VS for Mac 时遇到了这个问题。我发现一个更好的解决方案是删除对 System.Web.Entity 的引用,并添加 NuGet 包 System.Web.Http.Common。希望对您有所帮助。

【讨论】:

添加 NuGet 包 System.Web.Http.Common 时出现错误。所以我最终删除了对 System.Web.Entity 的引用,而不添加任何东西来替换它。【参考方案2】:

我能够通过从我的 Windows 框中获取 System.Web.Entity.dll 文件来解决这个问题。我在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\找到了我的。

一旦我将它复制到我 Mac 上项目的 bin 文件夹中,并更新了引用以包含 HintPath...

<Reference Include="System.Web.Entity" >
  <HintPath>..\bin\System.Web.Entity.dll</HintPath>
</Reference>

该项目将在 Xamarin Studio 中构建。它仍然在引用旁边显示红色 X(是的,即使我指定它是本地副本并添加了 HintPath),但至少它可以找到它。

我最终收到另一个关于无法加载 System.Drawing.BitmapSuffixInSameAssemblyAttribute 的错误,但是,嘿,小进步!

【讨论】:

这个程序集不是应该放在 nuget 包中吗? 我会这么认为,但显然不是? Xamarin Studio 的 Nuget 还原没有得到它,尽管我在 Visual Studio 中构建需要它的项目从来没有遇到过问题,很可能是因为 dll 附带安装在 Windows 上的 .NET Framework。 使用 ASP.NET MVC 模板在 Visual Studio 中创建一个项目。创建项目后,进入References文件夹,右键单击“System.Web.Entity”,选择Properties。在“属性”中,将 CopyLocal 选中为 True。进入项目的bin文件夹,DLL就在那里;现在只需将其复制到 Linux 并执行上述答案中描述的操作【参考方案3】:

用 NuGet 的新 EntityFramework 替换旧的 EntityFramework 对您来说不是更好/更容易吗,我认为这将解决我们与其他参考文献有关的大部分问题

【讨论】:

【参考方案4】:

EntityFramework.dll 是否已复制到您的 bin 中?在视觉工作室中,您可以执行以下操作

【讨论】:

以上是关于Mono 上的 MVC 5:无法加载文件或程序集“System.Web.Entity”或其依赖项之一的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 ASP.NET (MVC 4) Web API OData Prerelease 加载文件或程序集 System.Net.Http,版本 = 4.0.0.0

从 2012 年到 2013 年更新后无法加载文件或程序集“System.Web.Http 4.0.0”

无法加载文件或程序集“WebMatrix.Data”

.Net Core T4 运行转换无法加载文件或程序集

无法加载文件或程序集 HRESULT:0x80131515(将控制器添加到在网络驱动器上具有程序集引用的 MVC 项目时)

MVC4.0:未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0 ”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配