Как указать targetframework для зависимостей nuget? - PullRequest
0 голосов
/ 22 мая 2018

Я создал частный пакет nuget с targetframework Netstandard 2.0. Этот пакет зависит от EntityFrameworkCore и EntityFramework.DbContextScope.

Это прекрасно работает, если я использую его в проекте .Net Core, но не впроект .net Framework 4.6.1.

Пакет EntityFramework.DbContextScope вызывает проблемы.Я взглянул на исходный код в nuget и увидел это в проекте. Json

"frameworks": {
"netstandard1.3": {
  "imports": [

  ],
  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Microsoft.EntityFrameworkCore.Relational": "1.0.0"
  },
  "buildOptions": {
    "define": [
      "EFCore"
    ]

  }
},
"net46": {
  "dependencies": {
    "EntityFramework": "6.1.3"
  },
  "buildOptions": {
    "define": [
      "EF6"
    ]
  },
  "frameworkAssemblies": {
    "System.Data": "4.0.0.0"
  }
},

Если я установлю свой пакет nuget в проект .net Framework 4.6.1, он также автоматически установит EntityFramework 6, но я создал свой пакет Nuget с EntityFrameworkCore.

Могу ли я внести изменения в мой пакет Nuget, чтобы он всегда устанавливал EntityFramework.DbContextScope с сетевым стандартом targetframework вместо net46?

EDIT: толькоСпособ, которым я мог сделать эту работу до сих пор, заключается в ручном редактировании hintpath в файле csproj проекта .net framework 4.6.1.Это работает, но далеко от идеала.

 <Reference Include="EntityFramework.DbContextScope, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\EntityFramework.DbContextScope.1.0.0\lib\netstandard1.3\EntityFramework.DbContextScope.dll</HintPath>
</Reference>

1 Ответ

0 голосов
/ 15 июня 2019

Этот вопрос может быть полезен, поскольку показывает, как задать зависимости на основе целевой структуры.

В вашем случае это может выглядеть примерно так:

<dependencies>
   <group targetFramework="v4.6.1">
      <dependency id="NETStandard.Library" version="1.6.0" />
      <dependency id="Microsoft.EntityFrameworkCore.Relational" version="1.0.0" />
   </group>
</dependencies>

Если вы хотите, чтобы эти версии зависимостей всегда устанавливались независимо от целевой платформы, вы также можете оставить целевую среду без указания:

<dependencies>
   <group>
      <dependency id="NETStandard.Library" version="1.6.0" />
      <dependency id="Microsoft.EntityFrameworkCore.Relational" version="1.0.0" />
   </group>
</dependencies>
...