Ссылка на PCLCrypto в проекте NetStandard1.3

Я пытаюсь добавить ссылку на пакет PCLCrypto (2.0.147) в проект, использующий NetStandard 1.3.

После добавления импорта «portable-net45+netcore45+wpa81» в project.json он строится, но продолжает показывать ошибки.


проект.json:

{
  "supports": {},
  "dependencies": {
    "Microsoft.EntityFrameworkCore": "1.1.1",
    "NETStandard.Library": "1.6.1",
    "PCLCrypto": "2.0.147",
    "System.ComponentModel.Primitives": "4.1.0",
    "WraUtil.Helpers": "1.8.2"
  },
  "frameworks": {
    "netstandard1.3": {
      "imports": "portable-net45+netcore45+wpa81"
    }
  }
}

ошибки:

Severity    Code    Description Project File    Line    Suppression State
Error       Package PInvoke.NCrypt 0.3.2 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package PInvoke.NCrypt 0.3.2 supports:
  - net40 (.NETFramework,Version=v4.0)
  - portable-net40+win8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile92)
  - portable-net45+win8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile111)
Error       Package Validation 2.2.8 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package Validation 2.2.8 supports:
  - dotnet (.NETPlatform,Version=v5.0)
  - portable-dnxcore50+monoandroid10+monotouch10+net45+win+wp8+wpa81+xamarinios10 (.NETPortable,Version=v0.0,Profile=net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10)
  - portable-net40+sl5+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile328)
Error       Package PCLCrypto 2.0.147 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package PCLCrypto 2.0.147 supports:
  - monoandroid23 (MonoAndroid,Version=v2.3)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - portable-win81+wpa81 (.NETPortable,Version=v0.0,Profile=Profile32)
  - wp8 (WindowsPhone,Version=v8.0)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
Error       One or more packages are incompatible with .NETStandard,Version=v1.3.
Error       Package PCLCrypto 2.0.147 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package PCLCrypto 2.0.147 supports:
  - monoandroid23 (MonoAndroid,Version=v2.3)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - portable-win81+wpa81 (.NETPortable,Version=v0.0,Profile=Profile32)
  - wp8 (WindowsPhone,Version=v8.0)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
Error       One or more packages are incompatible with .NETStandard,Version=v1.3.
Error       Package Validation 2.2.8 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package Validation 2.2.8 supports:
  - dotnet (.NETPlatform,Version=v5.0)
  - portable-dnxcore50+monoandroid10+monotouch10+net45+win+wp8+wpa81+xamarinios10 (.NETPortable,Version=v0.0,Profile=net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10)
  - portable-net40+sl5+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile328)
Error       Package PInvoke.NCrypt 0.3.2 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package PInvoke.NCrypt 0.3.2 supports:
  - net40 (.NETFramework,Version=v4.0)
  - portable-net40+win8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile92)
  - portable-net45+win8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile111)

Нужно ли мне настраивать что-то еще?


person Thiago Romam    schedule 10.05.2017    source источник


Ответы (1)


В поле imports вашего файла project.json вы должны указать целевую платформу, совместимую с PCLCrypto 2.0.147, и эти ошибки в основном сообщают вам, какие у вас есть варианты.

Например, одной из поддерживаемых целевых платформ является portable-net45+win8+wp8+wpa81, которая совместима с netstandard1.0, что означает, что на нее также может ссылаться проект netstandard1.3 (вы можете найти здесь дополнительная информация о совместимости между старыми профилями PCL и новыми версиями .NET Standard).

Итак, обновите поле imports до: "imports": "portable-net45+win8+wp8+wpa81".

Небольшой бонус — если вы решите перейти с project.json на новые проекты в стиле MSBuild (csproj), вы можете добиться того же с помощью:

<PropertyGroup>
    <TargetFramework>netstandard1.3</TargetFramework>
    <PackageTargetFallback>portable-net45+win8+wp8+wpa81</PackageTargetFallback>
</PropertyGroup>
person Nikola Prokopić    schedule 12.05.2017
comment
Спасибо за разъяснения. Я добавляю импорт в каждый проект netstandard1.3 моего решения. Компилируется нормально и сообщения пропали. - person Thiago Romam; 16.05.2017