Nuget Spe c As pNet против AspNetCore - PullRequest
       88

Nuget Spe c As pNet против AspNetCore

0 голосов
/ 01 апреля 2020

Я создаю библиотеку, для которой требуется другое поведение в зависимости от типа проекта, который зависит от него.

Вот 3 типа проектов, которые я хочу разделить:

  • Как pNet (. NET Framework)
  • AspNetCore 2.1
  • AspNetCore 3.1

Вот мой csproj:

<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
  <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
  <PackageReference Include="System.Net.Http" Version="4.3.4" />

  <Content Remove="NetCore\**" />
  <Compile Remove="NetCore\**" />
  <EmbeddedResource Remove="NetCore\**" />
  <None Remove="NetCore\**" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.1' ">
  <PackageReference Include="Microsoft.AspNetCore.All" />
  <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" />

  <Content Remove="NetFramework\**" />
  <Compile Remove="NetFramework\**" />
  <EmbeddedResource Remove="NetFramework\**" />
  <None Remove="NetFramework\**" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">
  <FrameworkReference Include="Microsoft.AspNetCore.App" />

  <Content Remove="NetFramework\**" />
  <Compile Remove="NetFramework\**" />
  <EmbeddedResource Remove="NetFramework\**" />
  <None Remove="NetFramework\**" />
</ItemGroup>

Как видите, у меня есть условные сборки для каждой из платформ, на которые я хочу ориентироваться.

  • Для обычных приложений и ASP. NET у нас есть '$(TargetFramework)' == 'netstandard2.0'
  • Для ASP. NET Core 2.1 у нас есть '$(TargetFramework)' == 'netcoreapp2.1'
  • Для ASP. NET Core 3.1 у нас '$(TargetFramework)' == 'netcoreapp3.1'

Вот мои зависимости в nuspec:

<dependencies>
    <group targetFramework="netstandard2.0">
        <dependency id="TweetinviAPI" version="5.0.0" />
        <dependency id="Microsoft.AspNetCore.WebUtilities" version="2.2.0" />
        <dependency id="System.Net.Http" version="4.3.4" />
    </group>
    <group targetFramework=" netcoreapp2.1">
        <dependency id="TweetinviAPI" version="5.0.0" />
        <dependency id="Microsoft.AspNetCore.All" />
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="2.1.1" />
    </group>
    <group targetFramework="netcoreapp3.1">
        <dependency id="TweetinviAPI" version="5.0.0" />
        <dependency id="Microsoft.AspNetCore.App" />
    </group>
</dependencies>

При добавлении пакета nuget в любой из проектов я получаю следующую ошибку:

  • ASPNetCore 2.1
TweetinviAPI.AspNet 5.0.0 does not provide an inclusive lower bound for dependency Microsoft.AspNetCore.App. An approximate best match of Microsoft.AspNetCore.App 2.1.0 was resolved.  WebApplication

TweetinviAPI.AspNet 5.0.0 does not provide an inclusive lower bound for dependency Microsoft.AspNetCore.All. An approximate best match of Microsoft.AspNetCore.All 2.0.0 was resolved.  WebApplication-2.1
  • ASPNetCore 3.1
TweetinviAPI.AspNet 5.0.0 does not provide an inclusive lower bound for dependency Microsoft.AspNetCore.App. An approximate best match of Microsoft.AspNetCore.App 2.1.0 was resolved.  

This version of Microsoft.AspNetCore.App is only compatible with the netcoreapp2.1 target framework. Please target netcoreapp2.1 or choose a version of Microsoft.AspNetCore.App compatible with netcoreapp3.1.

Проект не работает, есть идеи сделать эту работу?

Спасибо, Linvi

1 Ответ

0 голосов
/ 02 апреля 2020

Для всех, кто интересуется, это то, что я в итоге сделал.

<dependencies>
    <group targetFramework="netstandard2.0">
        <dependency id="TweetinviAPI" version="5.0.0" />
        <dependency id="Microsoft.AspNetCore.WebUtilities" version="2.2.0" />
        <dependency id="System.Net.Http" version="4.3.4" />
    </group>
    <group targetFramework="netcoreapp2.1">
        <dependency id="TweetinviAPI" version="5.0.0" />
        <dependency id="Microsoft.AspNetCore.Http" version="2.1" />
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="2.1" />
        <dependency id="Microsoft.Extensions.Options" version="2.1" />
    </group>
    <group targetFramework="netcoreapp3.1">
        <dependency id="TweetinviAPI" version="5.0.0" />
    </group>
</dependencies>
...