如何将Infer.NET安装到Unity 2018.3

时间:2019-05-07 09:21:07

标签: c# .net unity3d infer.net

我有一个新的Unity项目,并按照Using .NET 4.x in Unity中的说明进行操作,我从gallery下载了Microsoft.ML.Probabilistic.Compiler NuGet程序包,并将DLL复制到了Assets / Plugins。在此之后,Unity输出错误消息

  

程序集'Assets / Plugins / Microsoft.ML.Probabilistic.Compiler.dll'将   由于错误而无法加载:无法解析参考   'Microsoft.ML.Probabilistic'。程序集是否缺失或不兼容   使用当前平台?

我下载并复制了丢失的DLL及其后的每个丢失的DLL依赖

  • Microsoft.ML.Probabilistic.dll
  • System.CodeDom.dll
  • Microsoft.CodeAnalysis.CSharp.dll
  • Microsoft.CodeAnalysis.dll
  • System.Collections.Immutable.dll
  • System.Reflection.Metadata.dll

在添加System.Reflection.Metadata.dll之后,Unity不再显示任何错误。

当我添加

using Microsoft.ML.Probabilistic;
using Microsoft.ML.Probabilistic.Compiler;

对于脚本,该项目在Unity和Visual Studio Community中都可以正常构建,但是当我尝试使用这些库时,即Microsoft.ML.Probabilistic.Compiler.Variable<T>

using UnityEngine;
using Microsoft.ML.Probabilistic;
using Microsoft.ML.Probabilistic.Compiler;

public class Main : MonoBehaviour {
    void Start () {
        Variable<bool> firstCoin = Variable.Bernoulli (0.5);
    }
}

Unity和Visual Studio均失败

  

资产/脚本/Main.cs(7,3):错误CS0246:类型或名称空间名称   找不到'Variable <>'(您是否缺少using指令或   组装参考?)

  

资产/脚本/Main.cs(7,30):错误CS0103:名称“变量”确实存在   当前上下文中不存在

-r:Microsoft.ML.Probabilistic.Compiler.dll添加到Assets / mcs.rsp文件会产生错误

  

Microsoft(R)Visual C#编译器版本2.9.1.65535(9d34608e)   版权所有(C)Microsoft Corporation。保留所有权利。

     

错误CS0006:元数据文件“ Microsoft.ML.Probabilistic.Compiler.dll”   找不到

项目配置为

  • Unity 2018.3.10f1
  • Visual Studio for Mac社区
  • 构建设置/平台:iOS
  • 玩家设置/脚本运行时版本:.NET 4.x等效

我是否设置没有关系

  • 播放器设置/ Api兼容级别:.NET 4.x

  • 播放器设置/ Api兼容性级别:.NET Standard 2.0

其他设置保留为默认设置。

我没有按照指南的说明将DLL添加到Visual Studio中的vs项目中

  

Visual Studio为Unity项目重新生成.csproj和.sln文件   每次打开时。结果,您无法添加程序集   直接在Visual Studio中引用,因为它们会丢失   重新打开该项目。相反,必须有一个名为mcs.rsp的特殊文本文件。   被使用:

     

在Unity项目的根Assets目录中创建一个名为mcs.rsp的新文本文件。

     

在空文本文件的第一行,输入:-r:System.Net.Http.dll,然后保存文件。您可以将“ System.Net.Http.dll”替换为可能缺少参考的任何随附程序集。

     

重新启动Unity编辑器。

1 个答案:

答案 0 :(得分:1)

Variable<bool>既不是Probabilistic也不是Probabilistic.Compiler

的一部分

相反,您需要包括using Microsoft.ML.Probabilistic.Models;,其中Variable<T>是其中的一部分。

using UnityEngine;
using Microsoft.ML.Probabilistic.Models;//we need Probabilistic.Models

public class SomeScript : MonoBehaviour
{
    void Start()
    {
        Variable<bool> firstCoin = Variable.Bernoulli(0.5);
    }
}

在.net 4.x运行时中使用统一的2018.3和2019.1进行了测试,并且构建良好(尽管在Windows上应该没有什么不同)。

  

...,然后将DLL复制到Assets / Plugins。在此之后,Unity输出错误消息

我个人不必这样做就可以正常工作。我使用Install-Package Microsoft.ML.Probabilistic.Compiler -Version 0.3.1810.501从NuGet将该软件包直接下载到默认目录(project / Packages /)。它还不需要我下载任何其他DLL。