2016-10-10 2 views
2

В стандартном проекте PCL .NET я хочу ссылаться на частный пакет nuget, который нацелен на профиль 111 (lib \ portable-win8 + net45 + wpa81 + MonoAndroid + Xamarin. iOS10)Ссылка на профиль PCL 111 - это стандарт PCL .NET 1.1

Но когда я добавляю пакет nuget, nuget жалуется, что пакет nuget не содержит целей, совместимых с netstandard 1.1. Хотя в документе https://docs.microsoft.com/fr-fr/dotnet/articles/standard/library объясняется, что профиль 111 совместим с netstandard 1.1, и на него можно ссылаться, если на него ссылается пакет Microsoft.NETCore.Portable.Compatibility.

Любая идея, что не так? Я могу обновить собственный пакет nuget, но не знаю, что изменить.

ответ

3

В файле project.json, попробуйте добавить директиву imports для конкретного профиля PCL. Подобно этому,

"frameworks": { 
    "netstandard1.1": { 
    "imports": "portable-win8+net45+wpa81" 
    } 
} 

Кроме того, для обеспечения максимальной совместимости, я думаю, вы должны отбросить спецификации MonoAndroid и Xamarin.iOS10 для пакета NuGet. Менеджер пакетов должен иметь возможность заключить Xamarin.

Более подробную информацию о директиве imports можно найти here.

+0

Попробую что спасибо – Softlion

+0

Любая удача? Я попробовал это сам сейчас, и для меня это похоже на трюк. –

2

Этот же трюк работает с файлами .csproj. Вам просто нужно добавить PackageTargetFallback к вам файлу проект (проверены в VS2017):

<PropertyGroup> 
    <TargetFramework>netstandard1.1</TargetFramework> 
    <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wpa81</PackageTargetFallback> 
</PropertyGroup> 
+0

Отлично, это работает для меня. –

0

Иногда при попытке использовать пакет, пакет не поддерживается соответствующий TargetFramework. Импорт предоставил вам возможность указать в этом случае, какие активы TargetFramework использовать вместо этого, поскольку вы знаете, что они совместимы.

От: https://docs.nuget.org/ndocs/schema/project.json

Импорта Импорт предназначен, чтобы пакеты, которые используют Dotnet TxM для работы с пакетами, которые не объявляют Dotnet TxM. Если ваш проект использует dotnet TxM, то все пакеты, на которые вы полагаетесь, также должны иметь dotnet TxM, если вы не добавите в свой проект project.json следующее: чтобы платформы, не поддерживающие dotnet, были совместимы с dotnet. Если вы используете dotnet TxM, тогда система проектов PCL добавит соответствующий оператор импорта на основе поддерживаемых целей.

"frameworks": { "dotnet": { "imports" : "portable-net45+win81" } } 

MSBuild синтаксис для поддержки PackageTargetFallback

PackageTargetFallbacks могут быть установлены в одной из целей Microsoft (мы рассматриваем), или другие.

И, наконец, как @altso говорит, вы можете решить свою проблему при редактировании.csproj проекта PCL и добавьте следующую строку:

<PackageTargetFallback Condition="'$(TargetFramework)'=='Net45'"> 
    $(PackageTargetFallback);portable-net45+win8+wpa81+wp8 
</PackageTargetFallback > 

Ссылка: https://github.com/NuGet/Home/wiki/PackageTargetFallback-%28new-design-for-Imports%29

Смежные вопросы