Ответ 1
Вы не можете (безопасно) загрузить библиотеку .NET Framework 4.5 в .NET Core, потому что она может использовать API, которые недоступны в .NET Core.
Только если ваша библиотека нацелена на portable-net45+win8
(.NET Framework 4.5 и Windows 8 Portable Class Profile или выше), ее можно использовать с .NET Core. Поскольку этот конкретный профиль PCL ограничивает API, который совместим с (то, что раньше называлось WinRT) System.Runtime
, на котором основан .NET Core.
Список совместимых профилей PCL см. этот список (Совместимость с PCL внизу)
Если сборка, которую вы хотите ссылаться, не поддерживает netstandard1.x
или любой из поддерживаемых профилей, вы должны нацеливаться на .NET Framework 4.5 вместо .NET Core.
В вашем csproj
<TargetFramework>net45</TargetFramework>
...
<ItemGroup>
<PackageReference Include="Net45DependencyHere" Version="4.5.0" />
или если вы используете несколько целевых объектов
<TargetFramework>net45;netcoreapp1.1</TargetFramework>
...
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'net45' Include="Net45DependencyHere" Version="4.5.0" />
<PackageReference Condition="'$(TargetFramework)' == 'netcoreapp1.1' Include="NetCoreReplacementLibrary" Version="1.1.0" />
Вы просто не можете автоматически использовать любую библиотеку .NET Framework 4.5 в своем проекте .NET Core. Только PCL и netstandard1.x
.
Update
Для полноты:
Если вы определенный, что ваша библиотека/пакет классов нацелена на совместимый PCL, вы можете сделать nuget также восстановлением этих пакетов, даже если они не нацелены на netstandard1.x
.
<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>
Слово предупреждения
Никогда, повторяю, НИКОГДА не помещать что-либо еще, кроме совместимых библиотек PCL. НИКОГДА не ставьте здесь net45
. Это просто заставит NuGet загружать и устанавливать этот пакет, но он не заставит его работать и сбой во время выполнения с аналогичной ошибкой, как у вас выше!
Только там, чтобы заставить nuget установить пакет, который знает работать с .NET Core в течение переходного периода, пока большинство пакетов не нацелится на netstandard1.x
!