为什么Visual Studio无法将我的Unity C#编辑器脚本编译为DLL?
问题根因
- 报错找不到
UnityEditor命名空间,是因为你本次修改后的脚本用到了UnityEditor下的API,此前版本的脚本没有相关调用,所以不需要引用UnityEditor.dll也能编译成功。 - 你第二次修改命令时出现语法错误:
csc编译器要求每个被引用的程序集都需要单独带/reference参数前缀,你没有给UnityEditor.dll添加该前缀,编译器会将其识别为要编译的输入源文件,自然会提示二进制文件无法处理。
修复后的编译命令
csc /target:library /out:MyDLL.DLL /reference:"C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEngine.dll" /reference:"C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEditor.dll" MyEditorScript.cs
注意事项
- 后续如果需要引用其他Unity官方程序集,每个都要单独加
/reference:前缀,也可以将参数简写为/r:简化输入 - 编译生成的DLL依赖UnityEditor命名空间,属于编辑器扩展类代码,必须放在Unity项目的
Editor目录下才能正常加载,不能用于 runtime 逻辑 - 如果执行命令后仍提示找不到对应命名空间,检查脚本顶部是否添加了
using UnityEditor;语句
内容的提问来源于stack exchange,提问作者Stef
相关产品推荐
相关产品推荐

