Как стать автором
Обновить

Комментарии 7

Если ваш пакет полностью ориентирован на .NET Core или .NET 5, то вы можете использовать для развертывания нативных сборок механизм на базе каталогов RID. Вы просто копируете нативные сборки в директорию runtimes/win-x64/native пакета, где win-x64 – это RID целевой платформы, а среда выполнения сама загружает их в память процесса.


Можно также создавать гибридные решения, которые будут поддерживать сразу несколько сценариев развертывания нативных сборок:


  1. Для .NET Core и .NET 5 использовать каталоги RID.
  2. Для проектов .NET Framework использовать MSBuild-скрипты .targets или .props.
  3. Для сайтов ASP.NET 4.X использовать PowerShell-скрипты Install.ps1 и Uninstall.ps1.

В качестве примера можете посмотреть исходный код пакета JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.

Да, хорошее дополнение. На примере с пакетами по DB2, вижу что их делят по целевым системам Windows/Linux/OSX, возможно экономят на размере пакета:
www.nuget.org/packages/IBM.Data.DB2.Core
www.nuget.org/packages/IBM.Data.DB2.Core-lnx
www.nuget.org/packages/IBM.Data.DB2.Core-osx
На примере с пакетами по DB2, вижу что их делят по целевым системам Windows/Linux/OSX, возможно экономят на размере пакета:

Если хотите больше узнать по этой теме, то рекомендую прочитать мой пост «Let's make the Microsoft ClearScript.V8 fully cross-platform» в репозитории проекта Microsoft ClearScript.

Спасибо, действительно всеобъемлющее решение, а я уже привык ориентироваться исключительно на .NET Core ну и в перспективе на .NET 5 (когда выйдет LTS)

LTS же будет 6, а не 5

Но если вы в каком-то новом проекте подключите только пакет ViennaNET.Orm.DB2.Win, то IBM.Data.DB2.Core автоматически не подключится.

Есть специальная папка /buildTransitive, если вы при билде положите туда файлы *.props и *.targets, упакуете это всё в nuget пакет A, потом сделаете другой пакет B, который зависит от пакета А, то можно к проектам подключать только пакет B, а все файлы MSBuild будет подтягивать из пакета A автоматически. (Документация)

(Это если я правильно понял суть проблемы)
Все верно, и авторы IBM.Data.DB2.Core в последних версиях своих пакетов используют именно папку «buildTransitive». Это транзитивная зависимость в чистом виде. В описываемом примере, я рассказывал пример, когда вы в своем пакете наследуете контент и скрипты от другого пакета, при этом транзитивно на него не ссылаясь. Это может применяться например для пакетов, у которых нет папки «buildTransitive»…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий