我目前正在与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。
答案 0 :(得分:0)
尝试使用IL2CPP脚本后端。 .NET的表面要比.NET脚本后端和.NET脚本后端都要大得多。