【问题标题】:Why won't Visual Studio compile my C# file to a DLL?为什么 Visual Studio 不能将我的 C# 文件编译为 DLL?
【发布时间】:2022-01-04 02:28:41
【问题描述】:

我有一个旧的 Unity 项目,几年前我将几个 (c#)editor-scripts 构建到一个 dll 中。 我还在大量使用dll,但是现在我对原始脚本做了一些更改,所以我想再次将它们编译成dll。

我对 dll 和编译之类的东西知之甚少,但幸运的是,我准确地写下了将其编译为 dll 所需执行的操作,即我在 Visual Studio 2010 命令提示符中输入的以下行: csc /target:library /out:MyDLL.DLL /reference:"C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEngine.dll" MyEditorScript.cs

但是,当我这样做时,我收到错误:“错误 CS0246:找不到类型或命名空间名称‘UnityEditor’。您是否缺少 using 指令或程序集引用?”

我正在使用与当时完全相同的(旧)Unity 版本,以及相同的 Visual Studio(我确实拥有并使用了 Visual Studio 和 Unity 的新版本,在这里看起来更安全坚持以前的工作),所以我真的不明白为什么它不再工作了。 我的意思是,我知道它需要 UnityEditor dll,但是在那之前它是怎么工作的呢?

有一个 UnityEditor.dll 与我在命令提示符中引用的 UnityEngine.dll 位于同一位置,但是当我尝试添加它时(例如:csc /target:library /out:MyDLL.DLL /reference:"C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEngine.dll" "C:\Program Files (x86)\Unity_3.5.1f2\Editor\Data\Managed\UnityEditor.dll" MyEditorScript.cs)它抱怨该 dll 是某些人的二进制文件原因。

有谁知道如何解决这个问题?

【问题讨论】:

    标签: c# unity3d visual-studio-2010 dll command-prompt


    【解决方案1】:

    显然我还需要另一个 /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

    我仍然不明白为什么我过去不需要引用编辑器 dll。

    如果有人知道,请随时解释一下

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多