У меня есть решение 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.
Возможно ли то, что я хочу сделать, и если да, то как?