Невозможно ссылаться на библиотеку .NET Core из UWP

У меня есть библиотека .NET Core со следующим project.json:

{
  "version": "1.0.0-*",
  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.6": { }
  },
  "scripts": {
    "postcompile": [
      "dotnet pack --no-build --configuration Release",
      "xcopy bin\\Release ..\\..\\lib\\ /Y"
    ]
  }
}

где postcompile script создает пакет nuget, который я добавил как пользовательский канал в VS, после эти инструкции. Это связано с тем, что я хочу ссылаться на него из Windows Universal App, который не может быть иным (пока), в соответствии с этим вопросом. Но когда я пытаюсь, я получаю это сообщение:

Package AEther 1.0.0 is not compatible with uap10.0 (UAP,Version=v10.0).
Package AEther 1.0.0 supports: netstandard1.6 (.NETStandard,Version=v1.6)
One or more packages are incompatible with UAP,Version=v10.0.

Вот где это перестает иметь смысл для меня. Согласно этому, он должен отлично работать для netstandard >= 1.6.0, а эта официальная таблица говорит, что мне нужно настроить netstandard <= 1.4.0, но это ничего не меняет. Более смутно, если я откажусь от и версий netstandard (зависимостей и целевой структуры) до, скажем, 1.5, я все равно получаю эту ту же ошибку без указания 1.6 в любом из моих файлов.

Обновление Проект UWP project.json выглядит следующим образом:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Может кто-то очистить либо

  • Как ссылаться на библиотеки .Net Core из UWP вообще или
  • Что происходит в моем конкретном случае?

ANSWER

Я решил добавить импорт в приложение UWP следующим образом:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": { import [ "netstandard1.6" ] }
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Ответ 1

вам необходимо обновить Microsoft.NETCore.UniversalWindowsPlatform до версии 5.2.1


Обновление 15 июля

Хорошо, вот мой результат

  • создать новый UWP
  • Обновление до 5.2.2, которое выйдет 14 июля.
  • update project.json, import "netstandard1.6"

    { "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", "Test": "1.0.0" }, "frameworks": { "uap10.0": { "imports": [ "netstandard1.6" ] } }, "runtimes": { "win10-arm": {}, "win10-arm-aot": {}, "win10-x86": {}, "win10-x86-aot": {}, "win10-x64": {}, "win10-x64-aot": {} } }

  • создать новую базовую библиотеку dotnet

  • создать библиотеку и создать пакет nuget
  • Я могу ссылаться на DLL файл или пакет nuget. И я Do получать интеллектуальные данные при наборе кода
  • UWP построен и развернут успешно, но как только я запустил его, выдается исключение введите описание изображения здесь

Ответ 2

Вот где это перестает иметь смысл для меня. В соответствии с этим должен работать нормально для netstandard >= 1.6.0, тогда как эта официальная таблица говорит, что мне нужно настроить netstandard <= 1.4.0, но это не изменится что-нибудь. Более смутно, если я понижу на две версии netstandard (зависимость и целевая структура), скажем, 1,5, я все равно получите эту ту же ошибку без указания 1.6 в любом из моих файлы.

Универсальная платформа Windows Platform для netstandard1.4 - ни к 1.6, ни к 1.5. Поэтому ваша библиотека (называемая AEther, я полагаю) имеет более высокое требование, чем ваше приложение UWP.

  • Как ссылаться на библиотеки .Net Core из UWP вообще или

Как указано в связанном с вами вопросе SO, это еще не поддерживается в Visual Studio.

Я могу только догадываться, что это связано с поддержкой CLI, которая является открытой проблемой. На сегодняшний день ожидается, что он будет исправлен в версии 5.3 мета-пакета Microsoft.NETCore.UniversalWindowsPlatform, хотя ранее предполагалось, что он будет исправлен в 5.2.2.

  1. Что происходит в моем конкретном случае?

NuGet сообщает вам, что ваш пакет поддерживает только netstandard1.6 целевую структуру, но не uap10.0. Действительно, если вы распакуете свой .nupkg, вы найдете свою DLL под lib\netstandard1.6.

Так как dotnet pack автоматически создает .nuspec из вашего project.json, поэтому вам нужно исправить его с помощью правильной структуры ( например, netstandard1.4). Скорее всего, это будет легче компилировать для разных фреймворков, например Портативные профили, совместимые с .NET Platform Standard.