显式声明命名空间后 VS 出现 CS0433 错误,但 Unity 编译正常

CS0433 error in VS after explicitly declaring namespace, but Unity compiles just fine

我正在尝试在 Unity 中使用 System.Threading.Tasks.Task 来控制 IEnumerator 函数。我的代码已经工作了大约一年,但在 Visual Studio 2022 年突然停止编译。最奇怪的是,Unity 仍然编译我的代码,甚至成功构建。我已经尽可能地减少了我的代码,但仍然出现错误。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class taskTest : MonoBehaviour
{
    void Start()
    {
        System.Threading.Tasks.Task<int> task;
    }
}

似乎错误消息本身在 Visual Studio 中被窃听了。根据 Microsoft 的说法:类型 TypeName1 存在于 TypeName2 和 TypeName3 中。 但是我的错误不包括 TypeName3。我的错误是,CS0433:类型 'Task' 存在于 'Unity.Tasks、

screenshot of CS0433 error message

我使用的是 Unity 版本 2020.3.11f1 作为我已经使用了几个月的版本。我尝试更新到 Unity 版本 2020.3.35f1,但没有任何区别。我正在使用 Visual Studio 2022 版本 17.2.2。我确保 Tools for Unity 插件已更新。我尝试恢复到 VS 2019 版本 16.11.15,因为该版本过去对我有用。没有区别。

我也在使用 Firebase 9.0.0。这就是我需要使用 Tasks 的目的,但似乎即使没有在该脚本中使用任何 Firebase,我也会收到错误。

最后说明:我仍然可以在 Unity 中编译和构建我的应用程序。这个问题在技术上不会停止我的生产,但它阻止我使用 Attach To Unity 按钮,因为 VS 不编译这使得调试更加痛苦。

我在这里找到了解决方案 https://github.com/googlesamples/google-signin-unity/issues/117

我不得不删除 firebase 添加的两个文件

“从解析文件夹中删除 2 个文件 unity.compat 和 unity.tasks。确保不要从 dotNet45 文件夹中删除它。”

您可以尝试以下2种方法

方法一:

使用名称空间别名的方式无效。

方法二:

找到项目->Assets->Parse,删除Unity.Compat.dll和Unity.Task.dll文件

谢谢 希望对你有帮助