В скомпилированном моно отсутствуют библиотеки .NET по умолчанию — System.Object не определен или не импортирован

Я скомпилировал моно на 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


person Geesu    schedule 21.12.2014    source источник
comment
Можете ли вы опубликовать фактическую строку csc, ее расположение и встроенные библиотеки?   -  person Eris    schedule 26.12.2014
comment
Как я могу это обеспечить? Я не знаю, как найти линию CSC. Кроме того, я могу опубликовать вывод компиляции - это поможет?   -  person Geesu    schedule 26.12.2014
comment
Я добавил результат autogen.sh и сделал выше   -  person Geesu    schedule 26.12.2014
comment
Это результаты для создания моно или вашего приложения?   -  person Eris    schedule 27.12.2014
comment
Суть в том, чтобы построить моно.   -  person Geesu    schedule 08.01.2015
comment
Не могли бы вы опубликовать суть всего вывода xbuild?   -  person Cat Zimmermann    schedule 10.01.2015


Ответы (8)


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

/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>
person Cat Zimmermann    schedule 09.01.2015

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

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

Ответ Кэт Циммерманн уместен.

person Nathan Schulte    schedule 12.08.2016

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

person Sievajet    schedule 30.12.2014
comment
Оригинальный постер говорит о моноустановке, которая скомпилирована с нуля, а не загружена через Xamarin или через моноустановщик. - person Steve Mitcham; 31.12.2014

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

person Kmtdk    schedule 30.12.2014
comment
Мне не нужен инструмент mcs. Я пытаюсь скомпилировать моно. Я добавляю к нему функциональность, которая не была завершена. - person Geesu; 01.01.2015

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

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

от него.

person user1709408    schedule 17.10.2015

Я не знаю, как это логически обосновать, но после нескольких часов попыток исправить это,

Unload .net standards project

потому что я не понимал точной проблемы и решил

reload it again

бум... Это сработало... до сих пор не знаю, в чем логическая причина этого. если кто-то делает, пожалуйста, прокомментируйте ниже.

person Akshay Kulkarni    schedule 24.02.2018

Попробуйте удалить папки bin и obj во всех проектах этого решения.

Похоже, что в этих папках были старые файлы, созданные какой-то старой версией Visual Studio, которые несовместимы с новой версией Visual Studio.

person Jay Shah    schedule 31.05.2018

Я решаю эту проблему, изменив настройку проекта->общие->Целевая платформа на Mono/.NET 4.5.

Надеюсь, это сработает для вас.

person sam    schedule 04.09.2018