2015-06-09 22 views
6

Ja próbuje użyć następującej komendy wiersza poleceń do kompilacji montaż kodu z mojego projektu:Dlaczego podczas kompilowania tego zestawu pojawia się następujący błąd?

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 

Jak widać, jestem, wierzę, prawidłowo odwoływania się UnityEngine.dll. Kod, który ma zostać skompilowany, zawiera odniesienia do UnityEngine.UI i UnityEngine.EventSystems. Ale kiedy uruchomić powyższego polecenia, pojawia się następujący błąd kompilacji:

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

Z tego co udało mi się znaleźć przez googling, to wydaje się być ludźmi o błędach były coraz przy użyciu pre-4.6 montaż, ponieważ to po wprowadzeniu systemów EventSystems i UI. Ale nie wiem, jak mógłbym tego przegapić w bibliotece dll, o której mówię, ponieważ Unity 5 jest jedyną wersją, która kiedykolwiek dotknęła tego komputera.

Na marginesie, napisałem to pytanie do Unity Answers i nie otrzymałem jeszcze odpowiedzi. Spodziewam się, że to dlatego, że kompilacja montażowa wykracza poza zakres tego, co większość użytkowników wybiera. Stąd moje pytanie tutaj.

+1

Czy jesteś w stanie otworzyć 'UnityEngine' z Reflectorem lub podobnym narzędziem i sprawdzić, czy są tam oczekiwane typy? –

Odpowiedz

6

Przestrzeń nazw UnityEngine.EventSystems rzeczywiście pojawia się w UnityEngine.UI.dll i nie UnityEngine.dll więc wydaje się, trzeba odwołać były zbyt podczas kompilacji ręcznie z linii poleceń. Projekty Unity mają to domyślnie (patrz poniżej).

ta jest weryfikowana poprzez otwarcie się na montaż w narzędziu reflektora wyboru, tutaj używam JetBrains dotPeek:

enter image description here

W ten sposób pojawia się mój projekt Test z odniesieniami domyślny jedności. Należy pamiętać, że domyślnie odniesienie do UnityEngine.UI już pojawia się w Unity stworzonego projektu:

enter image description here

Kiedy zbudowałem mój Windnows aplikację komputerową poprzez Jedności, powyższe DLL ukazał się w:

< napęd>: < projectOutFolder> \ < Nazwa_projektu>_data \ Managed

1

Sprawdziłem UnityEngine.dll i nie ma obszaru nazw Eventsystems/UI nie jest wliczony w cenę. Pomimo istnienia biblioteki DLL w Unity5 \ Editor \ Data \ UnityExtensions \ Unity \ GUISystem \ UnityEngine.UI.dll, która zawiera te przestrzenie nazw.

+0

UPS. To był literówka. Miałem na myśli EventSystems –

+0

Dzięki. To ciekawe, czy jest to błąd doco z ich strony? – MickyD

+0

Nie jestem pewien, ale jest on deklarowany jako "Rozszerzenie", a interfejs użytkownika jest składnikiem OpenSource. może lepiej jest go utrzymać w ten sposób –

0

Można spróbować:

prawym przyciskiem myszy na "panelu projektu", a potem "powrotnego przywozu All".

Może się tak zdarzyć z powodu przełączania między platformami, np. IOS lub Desktop .. w związku z tym dane są usuwane, ponieważ stały się zbędne.

Rozwiąż dla mnie: Unity 5.2, Win 7, 32bits;

Powodzenia!

0

Dla komputerów Mac, jest to /Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll.

Powiązane problemy