Unity无法识别.NET Standard 2.0参考

时间:2018-07-01 13:25:27

标签: c# unity3d .net-standard hololens

我目前正在与Hololens结合Unity进行实验。实验的一部分是与现有的.NET Framework应用程序交换数据。这意味着我有两个应用程序共享的许多库,这些库已经重写为.NET Standard 2.0库,以便它们与两个应用程序兼容。

但是,当我开始在Unity脚本中引用.NET Standard 2.0库时,Unity出现以下错误:

  

错误CS0012:类型'Object'是在未引用的程序集中定义的。您必须添加对程序集“ netstandard,Version = 2.0.0.0,Culture = neutral”的引用。

我很难弄清是什么原因造成的。当我选择Edit-> Project Settings-> Player时,我将Scripting Runtime Version设置为.NET 4.x等效。脚本后端到.NET;和.NET Standard 2.0的Api兼容性级别。当我双击该错误时,它将在Visual Studio中打开Assembly-CSharp程序集,其中在其引用中显示 netstandard 的v2.0。当我将库的目标降低到.NET Standard 1.4时,不再出现错误,但是不幸的是,我必须使用2.0。

我需要设置什么才能使Unity识别到已引用 netstandard 的v2.0?

我使用Unity 2018.1.6f。 我以前在Unity Answers上问过我的问题,但那里没有任何答复。

感谢阅读。

编辑:每个请求,这是Unity脚本中的代码:

using AugmentedReality.Device;

public class ServiceProvider
{
   #region Singleton
   private static ServiceProvider _instance;
   public static ServiceProvider Instance
   {
      get
      {
         if(_instance == null)
            _instance = new ServiceProvider();
         return _instance;
      }
   }
   #endregion

   public IOwnShipService OwnShipService;

   private ServiceProvider()
   {
      OwnShipService = new OwnShipService();
   }
}

.NET Standard 2.0库中的OwnShipService:

namespace AugmentedReality.Device
{
   public interface IOwnShipService
   { }

   public class OwnShipService : IOwnShipService
   {
      public OwnShipService()
      { }
   }
}

这足以导致错误。我一直在减少调用代码的数量,以查看导致它的原因。只需从库中实例化一个空类就足以触发Unity中的错误。我也包括了screenshot of the error

1 个答案:

答案 0 :(得分:0)

尝试使用IL2CPP脚本后端。 .NET的表面要比.NET脚本后端和.NET脚本后端都要大得多。