Невозможно ссылаться на библиотеку .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.
- Что происходит в моем конкретном случае?
NuGet сообщает вам, что ваш пакет поддерживает только netstandard1.6
целевую структуру, но не uap10.0
. Действительно, если вы распакуете свой .nupkg
, вы найдете свою DLL под lib\netstandard1.6
.
Так как dotnet pack автоматически создает .nuspec
из вашего project.json
, поэтому вам нужно исправить его с помощью правильной структуры ( например, netstandard1.4
). Скорее всего, это будет легче компилировать для разных фреймворков, например Портативные профили, совместимые с .NET Platform Standard.