2014-12-21 15 views
38

ho compilato mono su OS X Mavericks seguendo la guida si trova qui: http://www.mono-project.com/docs/compiling-mono/mac/mono librerie .NET manca di default compilati - System.Object non è definita o importata

Ora, quando compilo la mia applicazione utilizza xbuild Sono ottenere i seguenti errori:

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 

Quando ho utilizzato il programma di installazione mono su OS XI non ho mai ricevuto nessuno di questi errori.

(Sto costruendo mono perché sto aggiungendo funzionalità al framework .NET che non è stata completata)

Risultato di autogen.sh esecuzione: https://gist.github.com/Geesu/149332f3f877c891d387 risultato dell'esecuzione di make: https://gist.github.com/Geesu/4296f7d4c6c368d6986d

+1

Puoi pubblicare la linea csc attuale e le posizioni di esso e le librerie predefinite? – Eris

+0

Come posso fornire questo? Non sono sicuro di come trovare la linea CSC. Inoltre, posso pubblicare l'output della compilation - sarebbe d'aiuto? – Geesu

+0

Ho aggiunto il risultato di autogen.sh e creato sopra – Geesu

risposta

3

Ho accartocciato questo problema a questo problema. Ho dimenticato di controllare gli aggiornamenti dopo aver eseguito nuovamente l'installazione di Mavericks e sono disponibili aggiornamenti di canale Stabili per Mono e Xamarin.Android. Una volta installati, tutto è andato bene.

+2

Il poster originale parla di un'installazione mono compilata da zero, non scaricata tramite Xamarin o tramite il programma di installazione mono. –

1

La differenza con l'installazione e la build di casa è il fatto che l'installatore "sa" dove si trovano i libarys, mentre quello compilato non lo fa. Quindi, a meno che tu non indichi quella posizione durante la compilazione della tua app, il tuo problema si verificherà (in pratica non sono state trovate dll di sistema). Consiglierei di esaminare the mcs documentation e specificare il percorso. (EDIT: con il parametro "-L" dovrebbe farlo.).

+0

Non avrei bisogno dello strumento mcs. Sto cercando di compilare mono stesso. Sto aggiungendo funzionalità che non è stata completata. – Geesu

13

Se c'è un avvertimento simile a:

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

È possibile ignorare il .NET Framework sulla riga di comando:

xbuild /p:TargetFrameworkVersion="v4.0" 

È possibile modificare la vostra soluzione:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
1

il mio progetto ha iniziato la compilazione, quando ho rimosso le linee

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

da esso.

7

Mi sono imbattuto in questo problema durante la creazione di YouCompleteMe/OmniSharpServer su Debian unstable (Sid). Quello che sta succedendo è che la versione installata di mono non ha gli assembly Framework v4.5.2 installati, il che è il default del compilatore quando crea quella soluzione/progetto.

Soluzione alternativa è specificare la versione del framework di destinazione come quella che si è disponibile o rendere disponibile quella scelta come target (ad esempio durante la compilazione personalizzata).

La risposta di Cat Zimmermann è azzeccata.

0

non so come eseguire questa logica, ma dopo aver tentato di risolvere questo problema per un paio d'ore,

Unload .net standards project 

perché non stavo ottenendo l'esatto problema e ha deciso di

reload it again 

boom ... Ha funzionato ... ancora non so quale sia la ragione logica dietro di esso. se qualcuno lo fa, si prega di commentare qui sotto.