Ориентация на несколько версий. NET Framework в файле nuspe c - PullRequest
0 голосов
/ 20 марта 2020

У меня есть решение Visual Studio с несколькими проектами. Для каждой версии. NET Framework (+. NET Core) есть один отдельный csproj, который я хочу поддерживать, и я хочу сохранить его таким. Все они генерируют одну DLL каждый. Все библиотеки DLL имеют одинаковые имена, но немного различаются.

Я недавно начал генерировать пакеты NuGet из этих библиотек DLL, используя файл nuspe c и команду nuget pack. До сих пор я генерировал один пакет NuGet для каждой библиотеки DLL.

Можно ли создать один пакет NuGet, содержащий все библиотеки DLL, а когда пользователь устанавливает пакет, устанавливает правильную библиотеку DLL?

В своем файле nuspe c я попробовал следующее:

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    ...
    <dependencies>
      <group targetFramework=".NETCoreApp3.1" />
      <group targetFramework=".NETFramework4.0" />
    </dependencies>
  </metadata>
  <files>
    <file src="bin\Company.Product.dll" target="lib\net40" />
    <file src="..\CompanyProductCore\bin\Company.Product.dll" target="lib\netcoreapp3.1" />
  </files>
</package>

Когда я смотрю в сгенерированный пакет NuGet, в папке lib есть две ожидаемые подпапки, и каждая из них содержит DLL, которая выглядит правильно.

Однако, когда я тестирую пакет и пытаюсь установить его в другое решение Visual Studio в. NET Core App проекте, я получаю предупреждение:

Package X was restored using '.NETFramework,Version=v4.6.1...4.6.2...4.7...4.7.1...4.7.2...4.8 instead of the project target framework '.NetCoreApp,Version=3.1'. This package may not be fully compatible with your project.

, который не появился, когда я упаковал его отдельно. Так что может показаться, что он не обнаружил, что была дана. NET Core-speci c DLL.

Возможно ли то, что я хочу сделать, и если да, то как?

1 Ответ

0 голосов
/ 20 марта 2020

Целевые рамки должны быть net40 и netcoreapp3.1.

<dependencies>
      <group targetFramework="netcoreapp3.1" />
      <group targetFramework="net40" />
</dependencies>

https://docs.microsoft.com/en-us/dotnet/standard/frameworks

...