1

我有一个新的 Unity 项目,并按照在 Unity 中使用 .NET 4.x 中的说明,我从中下载了 Microsoft.ML.Probabilistic.Compiler NuGet 包并将 DLL 复制到资产/插件。在此 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 社区中构建良好,但是当我尝试使用库时,即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 都失败了

Assets/Scripts/Main.cs(7,3):错误 CS0246:找不到类型或命名空间名称“Variable<>”(您是否缺少 using 指令或程序集引用?)

Assets/Scripts/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”

项目配置为

  • 统一2018.3.10f1
  • Visual Studio for Mac 社区
  • 构建设置/平台:iOS
  • 播放器设置/脚本运行时版本:.NET 4.x 等效

我是否设置没有区别

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

或者

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

其他设置保留为默认值。

正如指南所说,我没有将 DLL 添加到 Visual Studio 中的 vs-project

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

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

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

重新启动 Unity 编辑器。

4

1 回答 1

1

Variable<bool>不属于任何一个ProbabilisticProbabilistic.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);
    }
}

使用统一 2018.3 和 2019.1 对此进行了测试,两者均使用 .net 4.x 运行时,并且构建良好(尽管在 Windows 上,它不应该有所作为)。

...并将DLL复制到资产/插件。在此 Unity 输出错误消息后

我个人不必这样做即可使其正常工作。我使用Install-Package Microsoft.ML.Probabilistic.Compiler -Version 0.3.1810.501. 它也不需要我下载任何额外的 DLL。

于 2019-05-17T13:22:59.193 回答