Как использовать пакет nuget в стандартном проекте NET, который совместим только с Portable-net45+win8+wp8+wpa81?

Контекст

За несколько часов скучной работы я только что перенес все свои проекты PCL в стандарт .NET в решении Xamarin.Forms. (почему? потому что в то время это казалось хорошей идеей)

Во всяком случае, я имел успех.

В качестве следующего шага я решил добавить Xamarin Insights, меня перенаправили на https://mobile.azure.com/ где я дал указание использовать пакеты Microsoft.Azure.Mobile.Analytics и Microsoft.Azure.Mobile.Crashes.

Однако при установке любого из пакетов я получил эту ошибку:

Package Microsoft.Azure.Mobile.Analytics 0.15.0 is not compatible with netstandard1.4 (.NETStandard,Version=v1.4). Package 
Microsoft.Azure.Mobile.Analytics 0.15.0 supports:
 - monoandroid403 (MonoAndroid,Version=v4.0.3)
 - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
 - uap10.0 (UAP,Version=v10.0)
 - xamarinios10 (Xamarin.iOS,Version=v1.0)

Вопрос

Я понимаю ошибку. Пожалуйста, не говорите мне, что мне нужно снова перенести все мои проекты обратно в PCL. (и отказаться от .NET Standard).

У меня есть некоторые воспоминания, что где-то я читал, что есть волшебный пакет, который я устанавливаю, затем он дает какой-то трюк, и все снова будет круто. (или я сплю?)


person g.pickardou    schedule 18.09.2017    source источник


Ответы (1)


Вы можете добавить резервную копию в конфигурацию вашего проекта, чтобы использовать стандартный пакет .NET в проекте PCL:

Новый формат csproj:

<PropertyGroup>
  <PackageTargetFallback>portable-net45+win8+wpa81</PackageTargetFallback>
</PropertyGroup>

Старый формат проекта.json:

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

Что касается «волшебного» пакета, вам, вероятно, рассказали о Microsoft. Bcl.Build, но в данном случае я не уверен, поможет ли это.

person Guillaume Perrot    schedule 18.09.2017
comment
Обратите внимание, что PackageTargetFallback устарел в пользу PackageAssetFallback в .NET Standard 2.0 и .NET Core 2.0, которые ведут себя немного по-другому. - person Martin Ullrich; 18.09.2017
comment
У меня не было успеха с PackageAssertFallback, работает только PackageTargetFallback. Стоит ли это считать плохим знаком? - person g.pickardou; 20.09.2017
comment
В вопросе вы используете стандарт .net 1.4, но PackageAssetFallback предназначен для 2.0. Вы за это время обновились до 2.0? - person Guillaume Perrot; 20.09.2017
comment
PS: Microsoft.AppCenter — это версии 1.0.0 пакетов MobileCenter, которые теперь имеют первоклассную поддержку стандарта .NET. Таким образом, этот обходной путь больше не нужен в новых пакетах. - person Guillaume Perrot; 20.11.2017