it-swarm.com.de

Kompilierte Mono-Standard-.NET-Bibliotheken fehlen - System.Object ist nicht definiert oder importiert

Ich habe Mono unter OS X Mavericks nach folgendem Leitfaden kompiliert: http://www.mono-project.com/docs/compiling-mono/mac/

Wenn ich nun meine Anwendung mit xbuild kompiliere, erhalte ich folgende Fehler:

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

Als ich das Mono-Installationsprogramm unter OS X verwendet habe, habe ich nie einen dieser Fehler erhalten.

(Ich baue Mono, weil ich dem .NET-Framework Funktionen hinzufüge, die nicht abgeschlossen wurden.)

Ergebnis der Ausführung von autogen.sh: https://Gist.github.com/Geesu/149332f3f877c891d387 Ergebnis der Ausführung make: https://Gist.github.com/Geesu/4296f7d4c6c368d6986d

41
Geesu

Wenn eine Warnung ähnlich der folgenden erscheint:

/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.

Sie können .NET Framework in der Befehlszeile überschreiben:

xbuild /p:TargetFrameworkVersion="v4.0"

Sie können Ihre Lösung ändern:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
14
Cat Zimmermann

Ich bin auf dieses Problem gestoßen, als ich YouCompleteMe/OmniSharpServer unter Debian Unstable (Sid) erstellt habe. Was passiert, ist, dass die installierte Version von Mono nicht die v4.5.2 Framework-Assemblys installiert hat. Dies ist, was der Compiler beim Erstellen der Lösung/des Projekts standardmäßig verwendet.

Um dieses Problem zu umgehen, geben Sie die Zielversion des Frameworks als verfügbar an oder stellen Sie die Zielversion (z. B. während der benutzerdefinierten Kompilierung) zur Verfügung.

Die Antwort von Cat Zimmermann ist treffend.

8
Nathan Schulte

Ich stolperte dieses Problem zu. Nachdem ich das Installationsprogramm von Mavericks erneut ausgeführt hatte, vergaß ich, nach Updates zu suchen. Stable Channel-Updates waren sowohl für Mono als auch für Xamarin.Android verfügbar. Sobald ich sie installiert habe, hat alles gut funktioniert.

3
Sievajet

Der Unterschied zum Installationsprogramm und zum Home-Build besteht darin, dass das Installationsprogramm "weiß", wo sich die Bibliotheken befinden, während das kompilierte nicht. Wenn Sie also beim Kompilieren der App nicht auf diesen Speicherort zeigen, wird Ihr Problem auftreten (es werden grundsätzlich keine System-DLLs gefunden). Ich würde empfehlen, in die mcs-Dokumentation nachzuschauen und den Pfad anzugeben. (EDIT: mit dem "-L" -Parameter sollte es tun.).

1
Kmtdk

mein Projekt wurde kompiliert, als ich Zeilen entfernte

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

davon.

1
user1709408

Ich löse dieses Problem, indem Sie die Projekteinstellung-> Allgemein-> Target Framework in Mono/.NET 4.5 ändern.

Ich hoffe es funktioniert für Sie.

0
sam

Löschen Sie die Ordner bin und obj in allen Projekten dieser Lösung. 

Anscheinend hatten diese Ordner alte Dateien, die von einer älteren Version von Visual Studio erstellt wurden, die nicht mit der neuen Version von Visual Studio kompatibel ist. 

0
Jay Shah

Ich weiß nicht, wie ich das logisch sichern sollte, aber nachdem ich versucht habe, das Problem einige Stunden zu beheben,

Unload .net standards project

weil ich nicht genau das problem bekam und entschied mich dazu

reload it again

boom ... Es hat funktioniert ... weiß immer noch nicht, was der logische Grund ist. Wenn jemand dies tut, kommentieren Sie bitte unten.

0
Akshay Kulkarni