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

APa*_*mer 6 c# mono .net-assembly unity-game-engine

我正在尝试使用以下命令行命令来编译我的项目中的代码程序集:

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mic*_*kyD 6

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

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

在此输入图像描述

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

在此输入图像描述

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

< drive >:< projectOutFolder >\< projectName > _Data\Managed