компилировать CS файлы с моно? - PullRequest
2 голосов
/ 22 мая 2010

Я пытаюсь скомпилировать мой проект с моно на Linux. Мой cmd выглядит примерно так ...

gmcs  Pages/UserProfile.cs   Properties/AssemblyInfo.cs   queues.cs   watch_editor.cs Class1.cs -define:USE_SQLITE -r:System -r:System.Collections -r:System.Collections.Generic -r:System.Collections.ObjectModel -r:System.Collections.Specialized -r:System.Configuration

но очень долго. и я получаю вывод

error CS0006: cannot find metadata file `System.Collections'
error CS0006: cannot find metadata file `System.Collections.Generic'
error CS0006: cannot find metadata file `System.Collections.ObjectModel'
...

Как мне решить эту проблему?

Я также попробовал наоборот (ниже), и у меня была та же ошибка с сообщением .dll в конце их

gmcs   -define:USE_SQLITE -r:System.dll -r:System.Collections.dll  -r:System.Web.UI.WebControls CommentCenter.cs   cookies.cs   db.cs   Default.aspx.cs 

1 Ответ

8 голосов
/ 22 мая 2010

Вы путаете сборки и пространства имен. Сборка, такая как System.dll, представляет собой двоичный файл библиотеки, который может содержать типы в нескольких пространствах имен. Пространство имен можно разделить на несколько сборок, и имя сборки не обязательно должно соответствовать пространствам имен.

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

Учитывая, что большинство классов в этих пространствах имен находятся в mscorlib (на который ссылается по умолчанию) или System.dll, вы, вероятно, просто хотите

gmcs  Pages/UserProfile.cs   Properties/AssemblyInfo.cs   queues.cs   watch_editor.cs Class1.cs -define:USE_SQLITE -r:System

Я настоятельно рекомендую вам использовать IDE, например, MonoDevelop. Вы можете просмотреть команды компилятора, которые он генерирует, если вам интересно.

...