Unity:迁移到2019.2.0f1出现错误Unity.Tasks和mscorlib中都存在类型'Task <T>'

时间:2019-08-07 19:57:31

标签: .net unity3d

我有一个现有项目。它使用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兼容级别。

有人绊倒类似问题吗?

2 个答案:

答案 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();  
   }  
}