为什么它用不同的类型编译?

Why it compiles with different type?

错误:

IL2CPP error for type 'Namespace.SubNamespace.MyClass/<MyIEnumeratorFunc>d__20' in assembly 'Path\MyUnityProject\Temp\StagingArea\Data\Managed\VisualStudioSolutionName.dll'
Additional information: Interface System.Collections.Generic.IEnumerator`1<System.Object> method T System.Collections.Generic.IEnumerator`1<System.Object>::get_Current() not implemented on non-abstract class Namespace.SubNamespace.MyClass/<MyIEnumeratorFunc>d__20

Unity 期待 System.Collections.IEnumerator 我尝试使用 IEnumerator:

  1. 我试过直接写

    private System.Collections.IEnumerator MyIEnumeratorFunc(){}
    
  2. 我尝试删除

    using System.Collections.Generics;
    

    并将其附加到每个 List/Dictionary 条目 在编辑器中一切正常,但我收到上面描述的错误: 好像它试图使用 System.Collections.GENERICS.IEnumerator.

此外,如果我使用源代码(不是 .dll),错误就会消失

此外,您可以通过使用任何 IEnumerator/async 函数(甚至是空的)创建 .dll 来重现它,并为 iOS.

构建

问题出在项目名称中。 解决方案是

  1. 在解决方案资源管理器中用鼠标右键单击项目名称(不是解决方案名称)。

  2. 属性

  3. "Application" 选项卡

  4. 程序集名称 -> 设置为与 .dll 文件名称相同(不带“.dll”)