2015-06-09 8 views
6

Sto cercando di utilizzare il seguente comando riga di comando per compilare un insieme di codice dal mio progetto:Perché ricevo il seguente errore durante la compilazione di questo assembly?

C:/"Program Files"/Unity/Editor/Data/Mono/bin/gmcs 
-target:library -out:C:/Users/Austin/Desktop/PixelExpanse.dll 
-recurse:C:/Users/Austin/Desktop/Projects/Repos/trunk/PixelExpanse/SpaceColonyRefactor/Assets/Source/*.cs 
-d:RUNTIME -r:C:/"Program Files"/Unity/Editor/Data/Managed/UnityEngine.dll 

Come potete vedere, io sono, io credo, correttamente riferimento alla UnityEngine.dll. Il codice che verrebbe compilato contiene i riferimenti a UnityEngine.UI e UnityEngine.EventSystems. Ma quando ho eseguito il comando precedente, ottengo il seguente errore di compilazione:

error CS0234: The type or namespace name 'EventSystems' does not exist in the namespace 'UnityEngine'. Are you missing an assembly reference?

Da quello che ho potuto trovare attraverso googling, sembra che un popolo di errore sono stati ottenere quando si utilizza un pre 4.6-assemblaggio, perché questo è il momento in cui EventSystems e UI sono stati entrambi introdotti. Ma non so come potrei mancare che nella DLL mi riferisca a come Unity 5 sia l'unica versione che abbia mai toccato questo computer.

Come nota a margine, ho inviato questa domanda a Unity Answers e devo ancora ricevere una risposta. Mi aspetto che sia perché la compilazione degli assembly è al di fuori dell'ambito di ciò che la maggior parte degli utenti sceglie di intraprendere. Quindi la mia chiedendo qui.

+1

È possibile aprire 'UnityEngine' con Reflector o uno strumento simile e verificare se i tipi previsti sono presenti? –

risposta

6

Lo spazio dei nomi UnityEngine.EventSystems realtà appare in UnityEngine.UI.dll e non UnityEngine.dll così sembra è necessario fare riferimento dell'ex troppo quando si compila manualmente dalla riga di comando. I progetti Unity lo hanno di default (vedi sotto).

Questo è verificata aprendo l'assemblea nel vostro strumento riflettore di scelta, qui sto usando JetBrains dotPeek:

enter image description here

Ecco come il mio progetto di test appare con riferimenti Unity di default. Si noti che per default un riferimento alla UnityEngine.UI appare già nel progetto Unity-creato:

enter image description here

Quando ho costruito la mia Windnows un'applicazione desktop tramite l'Unità, le DLL di cui sopra è apparso in:

< unità>: < projectOutFolder> \ < projectName>_data \ Managed

1

Ho controllato l'UnityEngine.dll e non c'è lo spazio dei nomi di Eventsystems/UI non incluso. Nonostante ci sia una dll in Unity5 \ Editor \ Data \ UnityExtensions \ Unity \ GUISystem \ UnityEngine.UI.dll che include questi spazi dei nomi.

+0

Ups. Quello era un errore di battitura. Intendevo EventSystems –

+0

Grazie. È interessante, però, è un errore doco da parte loro, mi chiedo allora? – MickyD

+0

Non sono sicuro, ma è dichiarato come "Estensione" e l'interfaccia utente è un componente OpenSource. forse è meglio mantenerlo così –

0

Si può provare:

Fai clic destro su "pannello di progetto", e dopo "nuovamente tutti".

È possibile che si verifichi a causa del passaggio tra piattaforme, ad es. IOS, o Desktop .. quindi, le persone vengono cancellate da diventa inutile ..

Risolvere per me: Unità 5.2, Win 7, 32bits;

Buona fortuna!

0

Per mac, è /Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll.