编译此程序集时为什么会出现以下错误?

时间:2015-06-09 04:31:01

标签: c# unity3d mono .net-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

正如您所看到的,我相信,我正确地引用了UnityEngine.dll。 要编译的代码包含对UnityEngine.UIUnityEngine.EventSystems的引用。但是当我运行上面的命令时,我得到以下编译错误:

  

错误CS0234:类型或命名空间名称' EventSystems'名称空间中不存在UnityEngine'。你错过了装配参考吗?

从我通过谷歌搜索找到的内容,它看起来就像人们在使用4.6之前的程序集时遇到的错误,因为那时引入了EventSystems和UI。但我不知道如何在我引用的dll中错过这一点,因为Unity 5是唯一曾触及过此计算机的版本。

作为附注,我已将此问题发布到Unity Answers并且尚未收到回复。我希望它是因为汇编编译超出了大多数用户选择的范围。因此,我在这里问。

4 个答案:

答案 0 :(得分:6)

命名空间UnityEngine.EventSystems实际上出现在 UnityEngine.UI.dll 而不是 UnityEngine.dll 中,因此在手动编译时似乎也需要引用前者从命令行。 Unity项目默认具有此功能(见下文)。

通过在您选择的反射器工具中打开组件来验证这一点,这里我使用的是JetBrains dotPeek

enter image description here

这是我的测试项目与默认Unity引用一起出现的方式。请注意,默认情况下,Unity创建的项目中已经出现了对 UnityEngine.UI 的引用:

enter image description here

当我通过Unity构建我的Windnows桌面应用程序时,上面的dll出现在:

< 驱动>:其中 projectOutFolder > \< PROJECTNAME >的 _Data \托管

答案 1 :(得分:1)

我检查了UnityEngine.dll,但没有包含Eventsystems / UI命名空间。尽管Unity5 \ Editor \ Data \ UnityExtensions \ Unity \ GUISystem \ UnityEngine.UI.dll中有一个dll,其中包含这些命名空间。

答案 2 :(得分:0)

您可以尝试:

右键单击"项目面板",然后点击"重新导入全部"。

由于平台之间的切换,可能会发生这种情况,例如: IOS,或桌面..因此,folrders被删除成为不必要的..

为我解决:Unity 5.2,Win 7,32bits;

祝你好运!

答案 3 :(得分:0)

对于mac,它是/Applications/Unity/Unity.app/Contents/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll