2014-04-06 2 views
1

В течение последних двух дней я попытался запустить тестовое интернет-приложение MVC4 (приложение, созданное, когда внутри VisualStudio 2010 мы переходим к: File-> New-> MVC4 webApllication-> Интернет-приложению (с Razor)) на Mono, чтобы чтобы проверить, могу ли я использовать Linux для размещения любого реального приложения MVC.Есть ли способ писать независимые от системы MVC-приложения?

Сначала я попытался запустить его с Xamarian Studio и .NET - никаких проблем нет: он показывает, загрузочную страницу, я могу зарегистрироваться и логин -> Отлично.

Тогда я просто переключился с .NET на Mono, и весь ад сломался.

  1. Сначала он жалуется, что log4net не найден -> установка новейшего log4net исправила эту проблему, но почему она жаловалась в первую очередь ??
  2. После этого есть некоторая ошибка с EntityFramework -> обновление EF тоже исправлено, но, опять же - почему это не работает?
  3. Потом я увидел запуск страницы, но попытка зарегистрировать брошено:

    System.MissingMemberException типа будучи лениво инициализируется не общедоступный, конструктор без параметров.

Когда я обновил страницу, ушел выше ошибка, но я получил еще один, когда я пытаюсь зарегистрировать:

System.InvalidOperationException Для вызова этого метода, свойство «Membership.Provider» должно быть экземпляр «ExtendedMembershipProvider».

Я отказался:/

В соответствии с этим:

http://mono-project.com/Compatibility

MVC4 совместит, насколько асинхронные контроллеры не используются ... поэтому вопрос - я делаю что-то неправильно здесь или есть совместимость с моном одна большая ложь?

Позвольте мне добавить, что по совместимости я имею в виду: используя ТОЧНЫЙ код, ничего не меняя (так оно работает в Java или QT).

Заранее благодарим за ваше мнение.

С уважением.

+0

Попробуйте использовать такие заголовки, как «Проблемы с переносимостью .NET для Mono» или что-то в этом роде. Я думаю, что нынешнее название смутно и, кажется, сообщает что-то совершенно другое. – Chrysalis

+0

BTW, Xamarin никогда бы не требовал «кода один раз, запускать ...», поскольку он с самого начала пытается избежать ошибок стиля Java. Я не знаю, кто дает вам эту информацию, но он/она должен вводить в заблуждение. –

+0

@LexLi: Просто зайдите на Xamarin.com: "С Xamarin, вы пишете ваши приложения полностью в C#, разделяющие же код на IOS, Android, Windows и Mac" Для меня «обмен одним и тем же кодом» означает «код один раз, бегите везде». Также матрица совместимости на заявках на моно-сайт «MVC4 должна работать, за исключением асинхронных контроллеров», поэтому для меня это означает: она должна работать из коробки. Возможно, Mono должно изменить его утверждение на что-то вроде: «MVC4 должен работать, но вам, вероятно, придется переносить хотя бы часть вашего кода, а некоторые стандартные функции, предоставляемые MS dll, могут не работать». – user2384366

ответ

2

Для вашего пункта № 1 и 2 о том, почему проблемы log4net и EntityFramework вызывали проблемы, я бы подумал, что существуют разные сборки для двух фреймворков (.NET и Mono). Это было бы полезно, если вы воспользуетесь функциями фреймворка и тем, как .NET и Mono созданы и оптимизированы.

Для третьего пункта звуки, подобные SimpleMembership, не распознаются монофоном. Попробуйте следующее: http://goo.gl/hPnzjV

Перед тем, как сдаться, я бы послал моно-команду/сообщение на форум сообщества ... Я слышал, что они довольно отзывчивы. Надеюсь это поможет!

+0

Извините за мой поздний ответ. На этой неделе я попробую еще несколько тестов. Но трудно рассматривать Mono для любого проекта REAL, когда простейший проект не запускается:/Кроме того, если мне нужно использовать другой код для Mono и .NET, то в чем смысл кампании Xamarian «Код, когда-то исполняемый на bla bla bla «? – user2384366

+0

Я думаю, что Лекс Ли ответил на вашу точку зрения «Code once running on ...» довольно хорошо. Кроме того, вы все еще можете повторно использовать много кода, если используете разные версии библиотеки для каждой структуры. Гораздо лучше, чем изучение C# и Objective C и Java и ... вы понимаете. Это сложно, пока вы не повесите его, и я согласен с ним на начальном этапе, но не настолько, насколько он мог бы изучить новые технологии и языки, которые я бы догадался :) – Chrysalis

1

Я не из команды Mono, но ниже - мой опыт и мои наблюдения о том, как перейти на Mono из .NET и почему что-то ломается.

  • Корпорация Майкрософт не создает ASP.NET MVC или EF для поддержки Mono. Таким образом, оригинальные сборки из Microsoft (которые скопированы локально в VS) не будут работать так, как вы хотели бы на Mono. Обычно Mono отправляет в GAC соответствующие исправленные сборки (с теми же именами), поэтому используйте sudo find/| grep name_of_assembly, чтобы сначала проверить, какие сборки уже есть в GAC, и удалить их из вашей папки развертывания в Mono/Linux. Мы видим, что Microsoft и Xamarin сотрудничают на стороне совместимости, но для завершения всей работы требуется время.

  • Не используйте Xamarin Studio для Windows, чтобы проверить ситуацию. Нет, это не так надежно, поскольку он все еще использует .NET. Вы должны использовать MonoDevelop в Linux.

Теперь для ваших вопросов 1 и 2 очевидны. Моно поставляется с версией log4net в GAC, но это не последнее. Поэтому, если вам нравится, вам нужна ваша собственная копия. EF 6 является первым выпуском с открытым исходным кодом от Microsoft, поэтому использование последнего должно дать вам меньше проблем с Mono.

Для 3, я думаю, вы скопировали сборки Microsoft MVC 4 в Mono/Linux. Удалите те, которые требуют исправления, а затем используйте Mono в GAC.

Не ожидайте сегодня уровня совместимости с Java или Qt, поскольку Java проводит много лет, чтобы добраться до этого уровня. Вы просто слишком удачливы, чтобы увидеть прайм-тайм в Java, и .NET/Mono просто подходит.

+0

Извините за поздний ответ и спасибо за информацию, что объясняло бы кое-что ...- Я попробую ваши предложения позже на этой неделе. Хотя я понимаю, что Mono не на 100% совместима ... Xamarian рекламы, утверждают: «Код один раз, бежать на bla bla bla» ... Я даже не знаю, как их назвать. Также по какой-то странной причине - попытаюсь ли я создать пустой проект Razor внутри студии Monodevelop/Xamarian, там нет dll, поэтому вам нужно бороться с самого начала, чтобы протестировать простое приложение MVC4 ...:/ – user2384366

+0

Заявление Xamarin верно для BCL где совместимость намного лучше. Microsoft, похоже, начинает делиться наборами тестов с ними, чтобы повысить совместимость. Но это продолжающийся процесс и сосредоточиться на мобильных платформах. ASP.NET - это огромная структура, с которой еще труднее работать, поэтому я думаю, что нам еще нужно подождать, или мы можем помочь. –

Смежные вопросы