Подтвердить что ты не робот

Скомпилированные моно-недостающие библиотеки .NET по умолчанию - System.Object не определен или не импортирован

Я скомпилировал mono на OS X Mavericks после руководства, расположенного здесь: http://www.mono-project.com/docs/compiling-mono/mac/

Теперь, когда я компилирую свое приложение с помощью xbuild, я получаю следующие ошибки:

CSC: error CS0518: The predefined type `System.Object' is not defined or imported
CSC: error CS0518: The predefined type `System.ValueType' is not defined or imported
CSC: error CS0518: The predefined type `System.Attribute' is not defined or imported
CSC: error CS0518: The predefined type `System.Int32' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt32' is not defined or imported
CSC: error CS0518: The predefined type `System.Int64' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt64' is not defined or imported
CSC: error CS0518: The predefined type `System.Single' is not defined or imported
CSC: error CS0518: The predefined type `System.Double' is not defined or imported
CSC: error CS0518: The predefined type `System.Char' is not defined or imported
CSC: error CS0518: The predefined type `System.Int16' is not defined or imported
CSC: error CS0518: The predefined type `System.Decimal' is not defined or imported
CSC: error CS0518: The predefined type `System.Boolean' is not defined or imported
CSC: error CS0518: The predefined type `System.SByte' is not defined or imported
CSC: error CS0518: The predefined type `System.Byte' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt16' is not defined or imported
CSC: error CS0518: The predefined type `System.String' is not defined or imported
CSC: error CS0518: The predefined type `System.Enum' is not defined or imported
CSC: error CS0518: The predefined type `System.Delegate' is not defined or imported
CSC: error CS0518: The predefined type `System.MulticastDelegate' is not defined or imported
CSC: error CS0518: The predefined type `System.Void' is not defined or imported
CSC: error CS0518: The predefined type `System.Array' is not defined or imported
CSC: error CS0518: The predefined type `System.Type' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerator' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerable' is not defined or imported
CSC: error CS0518: The predefined type `System.IDisposable' is not defined or imported
CSC: error CS0518: The predefined type `System.IntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.UIntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeFieldHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeTypeHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.Exception' is not defined or imported

Когда я использовал моноустановщик в OS X, я никогда не получал никаких из этих ошибок.

(Я строю моно, потому что я добавляю функциональность к платформе .NET, которая не была завершена)

Результат запуска autogen.sh: https://gist.github.com/Geesu/149332f3f877c891d387 Результат работы make: https://gist.github.com/Geesu/4296f7d4c6c368d6986d

4b9b3361

Ответ 1

Если есть предупреждение, похожее на:

/lib/mono/4.5/Microsoft.Common.targets:  warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v2.0'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior.

Вы можете переопределить .NET Framework в командной строке:

xbuild /p:TargetFrameworkVersion="v4.0"

Вы можете изменить свое решение:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

Ответ 2

Я столкнулся с этой проблемой при создании YouCompleteMe/OmniSharpServer на Debian unstable (Sid). Что происходит, так это установленная версия mono не содержит установленных сборок v4.5.2 Framework, что и компилятор по умолчанию при создании этого решения/проекта.

Обходной путь заключается в том, чтобы указать целевую версию фреймворка как имеющуюся у вас или сделать доступной таргетинг (например, во время вашей пользовательской компиляции).

Ответ Cat Zimmermann подходит.

Ответ 3

Я смял эту проблему. Я забыл проверять обновления после перезагрузки установщика Mavericks, а также доступны обновления для стабильных каналов для Mono и Xamarin.Android. После того, как я их установил, все построено просто отлично.

Ответ 4

Разница с установщиком и домашней сборкой заключается в том, что установщик "знает", где находятся библиотеки, а скомпилированный - нет. Поэтому, если вы не укажете на это место при компиляции своего приложения, ваша проблема будет возникать (в основном нет системной dll). Я бы рекомендовал изучить документацию mcs и указать путь. (EDIT: параметр "-L" должен это сделать.).

Ответ 5

мой проект начал компиляцию, когда я удалял строки

<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>

.