Как вы строите моно приложение MVC на Linux? - PullRequest
2 голосов
/ 05 мая 2011

Это, насколько я понимаю, абсолютно минимальное MVC-приложение, которое можно иметь:

using System;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
public class HomeController : Controller {
  public string Index() {
    return "Hello World";
  }
}

Мой вопрос: без разработки Visual Studio или Mono, как вы можете построить это приложение на Linux??

У меня лично работает Ubuntu;Я ожидал, что смогу сделать это через:

gmcs hello.cs

Но это дает ошибку:

The type or namespace name `Mvc' does not exist in the namespace `System.Web'. Are you missing an assembly reference?

Что?Как мне получить эту необходимую сборку?Как мне от этого зависеть?

Я весь день искал ответ на этот вопрос и видел решения этого вопроса, которые можно разделить на четыре широкие категории:

1) Поместите system.web.mvc.dllв папке «bin» и построить его.

Это, похоже, ничего не делает.

2) Скомпилируйте магический файл .sln, который Visual Studio создала с помощью xbuild.

У меня нет ни одного из нихили копия Visual Studio.

3) Вам не нужно компилировать веб-приложения, вы просто настроили сервер, и он работает.

Не знаю.Я попытался использовать xsp2 и создать web.config, это всего лишь 404 на локальном хосте.Я думаю, что это просто неправильно.

4) Вам нужно скомпилировать моно из исходного кода, чтобы это работало.

Я использую 2.4, который является стандартным.пакет убунту;из комментариев, которые я видел, этого должно быть достаточно?

Итак, как вы на самом деле это делаете?

-

Ни одно из приведенных ниже решений (на момент написания) не имело окончательного ответа на это, но я принял одно из них, которое указало мне правильное направление.

Чтобы собрать минимальное приложение MVC (см. Выше) в Ubuntu, мне пришлось сделать следующее:

apt-get install mono-2.0-devel
gmcs /out:bin/out.dll /target:module /reference:/usr/lib/mono/2.0/System.Web.Mvc.dll hello.cs

: D

1 Ответ

1 голос
/ 05 мая 2011

В приведенном выше примере вы не говорите компилятору о любых других ссылках на библиотеки, которые вам требуются. Вот почему это не с сообщением об отсутствующих ссылках.

Вы сообщаете gmcs и другим компиляторам о других ссылках со следующим синтаксисом:

$ gmcs /reference:path/to/my/assembly.dll /target:library path/to/my/csharp.cs

Если вы пишете свое приложение в monodevelop или visual studio, вы все равно можете создать решение, не загружая его. Вы можете сделать это с помощью msbuild (в Windows).

В Linux вы можете выбрать xbuild или mdtool. Обычно у вас будет mdtool, если у вас также установлен monodevelop. xbuild является моноэквивалентом msbuild и будет работать точно так же для большинства проектов.

Monodevelop имеет дополнительное преимущество, заключающееся в том, что вы можете получить его для создания Make-файлов, так что ваше решение может быть построено более Linux / Unix путем запуска autotools и gnu make.

Чтобы решить проблему в последний раз, вы выбираете «включить интеграцию make-файла для этого проекта» при просмотре свойств проекта в monodevelop. Вы захотите сделать это для всех проектов вашего решения, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...