2014-12-21 24 views
38

ich hier befindet mono auf OS X Mavericks nach dem Leitfaden zusammengestellt haben: http://www.mono-project.com/docs/compiling-mono/mac/Zusammengestellt mono fehlt Standard .NET-Bibliotheken - System.Object ist nicht definiert oder importiert

Nun, wenn ich meine Anwendung zu kompilieren mit xbuild ich bin immer 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 die Mono-Installer auf OS XI verwendet erhielten nie eine dieser Meldungen.

(Ich baue mono, weil ich Funktionalität für das .NET-Framework ich hinzufügen, die nicht abgeschlossen wurde)

Ergebnis der laufenden autogen.sh: https://gist.github.com/Geesu/149332f3f877c891d387 Ergebnis Lauf machen: https://gist.github.com/Geesu/4296f7d4c6c368d6986d

+1

Können Sie die tatsächliche csc-Zeile und deren Standorte und die erstellten Bibliotheken posten? – Eris

+0

Wie kann ich das bereitstellen? Ich bin nicht sicher, wie man die CSC Linie findet. Außerdem kann ich die Ausgabe der Kompilation posten - würde das helfen? – Geesu

+0

Ich habe das Ergebnis von autogen.sh hinzugefügt und mache über – Geesu

Antwort

3

Ich stolperte dieses Problem zu. Ich habe vergessen nach Updates zu suchen, nachdem ich das Mavericks-Installationsprogramm erneut ausgeführt hatte, und es gab stabile Kanal-Updates für Mono und Xamarin.Android. Sobald ich sie installiert habe, hat alles gut funktioniert.

+2

Das ursprüngliche Poster handelt von einer Mono-Installation, die von Grund auf neu kompiliert wurde und nicht über Xamarin oder den Mono-Installer heruntergeladen wurde. –

1

Der Unterschied mit dem Installer und dem Home Build ist die Tatsache, dass der Installer "weiß", wo sich die Libraries befinden, während der kompilierte nicht. Wenn Sie also beim Kompilieren der App nicht auf diesen Speicherort verweisen, tritt Ihr Problem auf (es werden grundsätzlich keine System-DLLs gefunden). Ich würde empfehlen, in the mcs documentation zu suchen und den Pfad anzugeben. (EDIT: mit dem "-L" -Parameter sollte es tun.).

+0

Ich würde das mcs Werkzeug nicht brauchen. Ich versuche Mono selbst zu kompilieren. Ich füge Funktionalität hinzu, die nicht abgeschlossen wurde. – Geesu

13

Wenn es eine Warnung ähnlich:

/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 das .NET Framework in der Befehlszeile außer Kraft setzen:

xbuild /p:TargetFrameworkVersion="v4.0" 

Sie Ihre Lösung ändern können:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
1

mein Projekt begann zu kompilieren, wenn ich Linien

01 entfernte
<NoStdLib>true</NoStdLib> 
<NoConfig>true</NoConfig> 

von ihm.

7

Ich stieß auf dieses Problem beim Erstellen YouCompleteMe/OmniSharpServer auf Debian Unstable (Sid). Was passiert, ist, dass die installierte Version von mono nicht die v4.5.2-Framework-Assemblys installiert hat, was der Compiler standardmäßig beim Erstellen dieser Lösung/des Projekts ist.

Problemumgehung besteht darin, die gewünschte Framework-Version als eine verfügbare Version anzugeben oder die zielgerichtete Version zur Verfügung zu stellen (z. B. während der benutzerdefinierten Kompilierung).

Cat Zimmermanns Antwort ist zutreffend.

0

Ich weiß nicht, wie dies logisch zu unterstützen, aber nach einigen Stunden, dies zu beheben versuchen,

Unload .net standards project 

, weil ich nicht das genaue Problem bekommen und beschlossen,

reload it again 

Boom ... Es hat funktioniert ... weiß immer noch nicht, was der logische Grund dafür ist. Wenn es jemand tut, bitte unten kommentieren.