unity3d:Unity.Tasks和mscorelib中都存在“任务”类型

Nit*_*tin 5 c# unity-game-engine firebase google-signin

我创建了一个统一为2019.1.4f1的空白项目。我从此处导入了用于身份验证的firebase SDK程序包和另一个google登录包。我基本上是在尝试使用Firebase在Android中实现Google登录。但是当我导入第二个程序包(谷歌登录)时,出现此错误(如下)

在导入项目中,我没有做任何其他事情。我不知道该怎么做。

Library \ PackageCache \ com.unity.textmeshpro@2.0.1 \ Scripts \ Editor \ TMP_PackageUtilities.cs(310,17):错误CS0433:'Task'类型同时存在于'Unity.Tasks,Version = 0.0.0.0,Culture'中= neutral,PublicKeyToken = null'和'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'

Nic*_*hun 13

我遇到了同样的问题并修复了它。看起来此版本的 TextMeshPro 引用了您项目中的所有库。您可以通过更改缓存的包文件来更改它。更准确地说,您可以添加这一行

"overrideReferences": true,

“(你的项目目录)\Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Editor
Unity.TextMeshPro.Editor.asmdef”

通过在文本编辑器中打开它(确保您具有写入文件的访问权限)。

这将使 TextMesh Pro 编辑器代码仅引用此文件中的程序集,与项目中所有已编译的程序集相反。该文件将如下所示:

    {
        "name": "Unity.TextMeshPro.Editor",
        "references": [
            "Unity.TextMeshPro",
            "Unity.ugui",
            "Unity.ugui.Editor"
        ],
        "optionalUnityReferences": [],
        "overrideReferences": true,
        "includePlatforms": [
            "Editor"
        ],
        "excludePlatforms": []
    }
Run Code Online (Sandbox Code Playgroud)

第二个选项是删除 TextMesh Pro Package。如果您确定项目没有使用它,您可以使用顶部菜单“窗口-> 包管理器”。然后在 Packages 窗口中,在列表中选择 TextMesh Pro 并单击“删除”。


Ron*_*ler 8

这很简单,

转到:youProjectFolder\Assets\Parse\Plugins

删除 dotNet45 文件夹之外的所有文件

来自您的 Project Foulder 的图片

并且错误应该被解决。

  • 谢谢。这个解决方案在 Unity 2020.2 中对我有用。 (2认同)

小智 7

您可能遇到的问题是一个兼容层,它将 .NET 4.x 功能引入到名为 Parse 的 .NET 3.x 运行时中。在 Firebase 中,这就是为什么有 dotnet3 和 dotnet4 文件夹的原因。

执行插件导入时,假设您使用的是 .NET 4.x 运行时(Unity 2019 中的默认设置),请确保从 Firebase 的 dotnet4 文件夹中获取统一包。然后,当您导入 Google SSO 包时,排除 Parse 目录(Firebase 插件应该已经提取了必要的部分)。这应该能让你开始工作!


Mor*_*ork -1

将命名空间添加到声明中。

SomeNameSpace.Task task = new SomeNameSpace.Task();
Run Code Online (Sandbox Code Playgroud)

例如

Unity.Tasks.Task task = new Unity.Tasks.Task();
Run Code Online (Sandbox Code Playgroud)

完毕。