我有一个现有项目。它使用Firebase SDK等。
我之前已经将我的项目毫无问题地升级到Unity 2019.1.11f1。
当我将其升级到Unity 2019.2.0f1时,出现错误消息:
error CS0433: The type 'Task<T>' exists in both 'Unity.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
我已经搜索了可能没有结果的解决方案。 我的项目使用的是.NET 2.0兼容级别。
有人绊倒类似问题吗?
答案 0 :(得分:1)
如果您在 Assets/Parse/Plugins 的根目录下以及 dotNet45 文件夹下有 Unity.compat 和 Unity.tasks,请删除根目录下的文件。
答案 1 :(得分:0)
这意味着Task<T>
在两个(或多个)程序集中被引用。在这种情况下,在指令中:
using Unity.Tasks;
using mscorlib`;
您可以执行几项操作。第一种是在可能的情况下删除其中一个指令(当然,只有在未使用这两个指令中的任何一个时才可以这样做。因此并非总是可能的)。另外,您可以指定Task<T>
通过执行操作来引用特定程序集
using Task<T> = Unity.Task;
另一种选择是内联声明要使用Task<T>
的指令。例如Unity.Task.Task<T> = foo;
或mscorlib.Task<T> = bar;
。这将清除编译器的歧义。
(如果您使用的是VS,则上述两个选项都应由Visual Studio选中。将鼠标悬停在红色下划线上,并默认选择“显示潜在的修复程序”或ctrl + .
)
最后的解决方案是使用/reference
编译器选项。如Microsoft docs on error CS0433所示
(示例直接从上面的文档复制)
// compile with: /reference:cs0433_1.dll /reference:TypeBindConflicts=cs0433_2.dll
using TypeBindConflicts;
public class Test
{
public static void Main()
{
AggPubImpAggPubImp n6 = new AggPubImpAggPubImp();
}
}