Почему я получаю следующую ошибку при компиляции этой сборки?



Я пытаюсь использовать следующую команду командной строки для компиляции сборки кода из моего проекта:



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


Как вы можете видеть, я, по-моему, правильно ссылаюсь на UnityEngine.dll.
Код, который будет скомпилирован, содержит ссылки на UnityEngine.UI и UnityEngine.EventSystems. Но когда я выполняю приведенную выше команду, я получаю следующую ошибку компиляции:


Ошибка CS0234: тип или имя пространства имен "EventSystems" не существует в пространстве имен "UnityEngine". Вы пропускаете собрание ссылка?




Из того, что я смог найти через Google, похоже, что люди получали ошибку при использовании сборки pre-4.6, потому что именно тогда были введены EventSystems и UI. Но я не знаю, как я мог пропустить, что в dll я ссылаюсь как Unity 5 является единственной версией, которая когда-либо касалась этого компьютера.



В качестве примечания я отправил этот вопрос в Unity Answers и до сих пор не получил ответа. Я думаю, это потому, что ассамблея компиляция выходит за рамки того, что большинство пользователей там предпочитают делать. Поэтому я и спрашиваю об этом здесь.

664   4  

4 ответов:

Пространство имен UnityEngine.EventSystems фактически появляется в UnityEngine.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.dll , а не UnityEngine.dll так что, похоже, вам нужно ссылаться на первую тоже при компиляции вручную из командной строки. Проекты Unity имеют это по умолчанию (см. ниже).

Это проверяется путем открытия сборки в выбранном вами инструменте reflector, здесь я использую JetBrains dotPeek :

Введите описание изображения здесь

Так выглядит мой тестовый проект со ссылками Unity по умолчанию. Обратите внимание, что по по умолчанию ссылка на UnityEngine.UI уже появляется в проекте Unity-created:

Введите описание изображения здесь

Когда я создавал свое настольное приложение Windnows через Unity, вышеупомянутые библиотеки DLL появились в:

Привод>:папка проекта>\имя проекта>_Data \ Managed

Я проверил UnityEngine.dll и нет пространства имен Eventsystems / UI не включены. Несмотря на то, что в Unity5\Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine есть библиотека dll.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.dll, которая включает в себя эти пространства имен.

Вы можете попробовать:

Щелкните правой кнопкой мыши на "project panel", а затем"Reimport All".

Это может произойти из-за переключения между платформами, например IOS или Desktop.. таким образом, фолдеры удаляются ставшими ненужными..

Решите за меня: Unity 5.2, Win 7, 32bits;

Удачи!

Для mac это /Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll.

Comments

    Ничего не найдено.