2014-12-05 18 views
23

Цель: запуск проекта ASP.NET MVC 5 на Mono через Xamarain Studio.MVC 5 on Mono: Не удалось загрузить файл или сборку «System.Web.Entity» или одна из его зависимостей.

Ошибка после запуска сервера: Could not load file or assembly 'System.Web.Entity' or one of its dependencies.

enter image description here

Ошибка в Xamarin Студия:

enter image description here

Справочная информация: Проект был создан в Visual Studio 2013 в качестве веб-умолчанию проекта с. Большая часть конфигурации находится вне коробки. Код для него может быть viewed here on GitHub. У меня есть последняя и самая большая Mono и Xamarin Studio с момента написания. .NET Entity Framework - это разрешенная зависимость, и в Xamarin Studio нет проблем с построением.

Как я могу запустить этот проект? Как разрешить эту зависимость?

+0

Вам просто понадобится копия этой DLL (получить ее из окон). – Jester

+4

Есть ли причина, по которой эта DLL не включена в структуру Mono? –

ответ

0

Сопрягение EntityFramework.dll в вашем контейнере? В визуальной студии вы можете сделать следующее: enter image description here

2

Я смог обойти эту проблему, получив файл System.Web.Entity.dll из окна Windows. Я нашел свою в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\.

После того, как я скопировал в папку bin моего проекта на моем Mac, и обновил ссылку включить HintPath ...

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

проект будет строить в Xamarin Studio. Он по-прежнему показывал красный X рядом с ссылкой (да, даже если бы я указал, что это была локальная копия и добавлен HintPath), но, по крайней мере, он мог ее найти.

В результате я получил еще одну ошибку о том, что не могу загрузить System.Drawing.BitmapSuffixInSameAssemblyAttribute, но эй, небольшой прогресс!

+0

разве это собрание не должно появляться в пакете nuget или что-то в этом роде? – knocte

+0

Я бы так подумал, но, видимо, нет? Восстановление Nuget студии Xamarin не получилось, хотя мне никогда не приходилось создавать проект, который требует его в Visual Studio, вполне возможно, потому что dll поставляется с .NET Framework, установленной в Windows. – jonnybot

+0

Создайте проект в Visual Studio, используя шаблон ASP.NET MVC. После создания проекта перейдите в папку «Ссылки», щелкните правой кнопкой мыши «System.Web.Entity», выберите «Свойства». В свойствах выберите CopyLocal как True. Перейдите в папку bin проекта, там будет DLL; Теперь просто скопируйте его в Linux и сделайте то, что описано в ответе выше –

0

Не был бы лучше/проще просто заменить этот старый EntityFramework с новым из NuGet, я думаю, что позволит решить большинство наших проблем с другими ссылками

4

Я знаю, что это старая нить, но я столкнулся с этим, начав переносить проект MVC из VS для Windows в VS для Mac. Я нашел лучшее решение, чтобы удалить ссылку на System.Web.Entity и добавить пакет NuGet System.Web.Http.Common. Надеюсь, поможет.