2013-05-16 1 views
3

Мы пытаемся запустить простой сценарий Mono в командной строке OS X. Большинство скриптов отлично работают для нас, но в скором времени, когда мы пытаемся использовать System.Numerics, получаем «error CS0234: Тип или имя пространства имен` Numerics 'не существует в пространстве имен System. "Не удается заставить System.Numerics работать с командной строкой Mono (mcs) в OS X

Это не слишком удивительно и должно быть исправлено с помощью соответствующей опции командной строки для mcs, а также для правильной настройки PKG_CONFIG_PATH ... но это то место, где мы получаем тупик. Во-первых, вот сценарий, так что вы можете следовать в домашних условиях:

using System; 
using System.Numerics; 

public static class MainProgram { 
    public static void Main(string[] args) { 
     Console.WriteLine("Hello world!"); 
    } 
} 

Так что в следующий мы попытались «MCS -r: System.Numerics Test.cs». Это приводит к ошибке «CS0006: файл метаданных« System.Numerics »не найден».

«man mcs» предполагает, что мы можем получить другие системные пакеты, добавив в командной строке «-pkg: dotnet». Но это производит:

Пакет dotnet не найден в пути поиска pkg-config. Возможно, вы должны добавить каталог, содержащий `dotnet.pc ', в переменную окружения PKG_CONFIG_PATH. Ошибка пакета« dotnet »не найдена CS8027: Ошибка при запуске pkg-config. Проверьте вывод выше.

Хорошо, тогда мы не имели PKG_CONFIG_PATH, поэтому мы попытались определение одного:

export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/ 

Это фиксирует CS8027; но мы по-прежнему получаем CS0234, с которого мы начали. И если я объединю -pkg и -r, например. msgstr "mcs -pkg: dotnet -r: System.Numerics Test.cs", я получаю "ошибку CS0006: файл метаданных` System.Numerics "не найден».

Я в тупике в этой точке ... любая идея, какое заклинание мне не хватает, чтобы заставить System.Numerics работать с mcs?

ответ

2

Если вы используете Mono 2.10.x, вам нужно будет скомпилировать с dmcs, а не mcs, чтобы включить профиль 4.0 (System.Numerics - это только функция C# 4.0+).

Если вы используете Mono 2.11.x или 3.0.x, то mcs по умолчанию должен выбрать профиль 4.5. mcs -help должен показывать 2, 4 и 4.5 как возможные значения для опции -sdk. Если это не так, то структура не установлена ​​должным образом; У меня было это однажды, где я думаю, что /Library/Frameworks/Mono.framework/Versions/Current указал на неправильную директорию; установка второго раза исправлена.

Манипулирование pkg-config должно быть ненужным.

+0

Спасибо! mcs --version показывает, что я запускаю 2.10.12.0. У него есть опция -sdk, которая по умолчанию равна 2, и, предположительно, позволяет 4, но когда я пытаюсь -sdk: 4, у меня возникает ошибка. Но dmcs отлично работает, и поэтому мы будем придерживаться этого, пока не перейдем к Mono 2.11.x или новее. Мы были очень взволнованы этим - спасибо за вашу помощь! –

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

  • Нет связанных вопросов^_^