Как установить Infer.NET в Unity 2018.3 - PullRequest
1 голос
/ 07 мая 2019

У меня есть свежий проект Unity и, следуя инструкциям в Используя .NET 4.x в Unity , я скачал пакет NuGet для Microsoft.ML.Probabilistic.Compiler из галереи и скопировал 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

Unity больше не выдает ошибок после добавления System.Reflection.Metadata.dll.

Когда я добавляю

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

к сценарию, проект прекрасно собирается как в Unity, так и в Visual Studio Community, но когда я пытаюсь использовать библиотеки, а именно Microsoft.ML.Probabilistic.Compiler.Variable<T> class

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: не удалось найти тип или имя пространства имен «Переменная <>» (отсутствует директива using или ссылка на сборку?)

и

Активы / Scripts / Main.cs (7,30): ошибка CS0103: имя «Переменная» не существует в текущем контексте

Добавление -r:Microsoft.ML.Probabilistic.Compiler.dll в файл Assets / mcs.rsp приводит к ошибке

Компилятор Microsoft (R) Visual C # версии 2.9.1.65535 (9d34608e) Copyright (C) Microsoft Corporation.Все права защищены.

ошибка CS0006: файл метаданных 'Microsoft.ML.Probabilistic.Compiler.dll' не найден

Конфигурация проекта

  • Unity 2018.3.10f1
  • Сообщество Visual Studio для Mac
  • Настройки сборки / Платформа: iOS
  • Настройки проигрывателя / Сценарии выполнения Версия: .NET 4.x Эквивалент

Не имеет значения, установлен ли я

  • Настройки проигрывателя / Уровень совместимости API: .NET 4.x

или

  • Настройки проигрывателя / Уровень совместимости Api: .NET Standard 2.0

Остальные настройки оставлены по умолчанию.

Я не добавил библиотеки DLL в vs-проектв Visual Studio, как говорится в руководстве,

Visual Studio регенерирует файлы .csproj и .sln для проектов Unity при каждом их открытии.В результате вы не можете добавлять ссылки на сборки непосредственно в Visual Studio, поскольку они будут потеряны при повторном открытии проекта.Вместо этого необходимо использовать специальный текстовый файл с именем mcs.rsp:

Создать новый текстовый файл с именем mcs.rsp в корневом каталоге ресурсов вашего проекта Unity.

В первой строке в пустойВ текстовом файле введите: -r: System.Net.Http.dll и сохраните файл.Вы можете заменить «System.Net.Http.dll» любой включенной сборкой, в которой может отсутствовать ссылка.

Перезапустите редактор Unity.

1 Ответ

1 голос
/ 17 мая 2019

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);
    }
}

Протестировано это с Unity 2018.3 и 2019.1, как с .net 4.x, так и со средой исполнения (хотя в Windows это не должно иметь значения).

... и скопировал DLL в Активы / Плагины.После этого Unity выводит сообщение об ошибке

Мне лично не нужно было это делать, чтобы заставить его работать.Я загрузил пакет из NuGet прямо в каталог по умолчанию (project / Packages /), используя Install-Package Microsoft.ML.Probabilistic.Compiler -Version 0.3.1810.501.Это также не требовало от меня загрузки каких-либо дополнительных DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...