#.net #c#-4.0 #compilation #mono
#.net #c #-4.0 #Сборник #mono
Вопрос:
У меня установлена mono 2.10.4 в Linux, и я пытаюсь скомпилировать зависимую от .NET C # 4 кодовую базу.NET. Я смог скомпилировать в MonoDevelop, но мне нужно иметь возможность делать это из командной строки / инструмента сборки.
выполнение:
gmcs -langversion:4 -target:library -out:foo.dll ... <sources>
выдает следующую ошибку:
error CS1617: Invalid -langversion option `4'. It must be `ISO-1', `ISO-2', `3'
or `Default'
Версия компилятора gmcs --version
:
Mono C# compiler version 2.10.4.0
Дополнительные примечания:
- ubuntu 11.04
- установить в /opt/mono-2.10
- сначала установите mono в path
Комментарии:
1. кстати, если вы посмотрите на панель вывода сборки в Monodevelop, вы бы увидели подсказку: вместо gmcs вызывается dmcs
Ответ №1:
Я думаю, вы хотите запустить dmcs
вместо gmcs
. Со страницы компилятора CSharp:
Начиная с Mono версии 2.6, новый dmcs компилятора доступен в качестве предварительного просмотра C # 4.0 (предварительный просмотр, поскольку Mono 2.6 будет поставляться до завершения C # 4.0).
(Это немного устарело, поскольку сейчас я использую 2.10.5.0, но неважно.)
РЕДАКТИРОВАТЬ: альтернативный вариант, используйте, mcs
как указано здесь, поскольку вы используете 2.10.
Он не поддерживает определенное -langversion
из 4, но и компилятор Microsoft этого не делает:
/langversion:<string> Specify language version mode: ISO-1, ISO-2, 3,
or Default
Комментарии:
1. spot on. dmcs — это компилятор, ориентированный на 4.0
2. @rapsalands: Я полагаю, большую часть. Существует проверка совместимости, которую вы можете запустить, чтобы найти то, чего не хватает. Конечно, вы должны тщательно протестировать свое приложение на Mono, поскольку могут быть некоторые незначительные различия.
3. В настоящее время можно просто использовать mcs, поскольку компилятор использует System. Отражения больше нет. Подробности здесь: mono-project.com /…