Я предполагаю, что вы имеете в виду, что ваш управляемый код использует DllImport
атрибуты для вызова собственного кода, который в экосистеме .NET называется Platform Invoke или P / Invoke.Я упоминаю об этом, потому что если бы вы гуглили термины вокруг P / Invoke и nuget, вам, вероятно, повезло бы найти вопросы о переполнении стека существующего, сообщения в блоге и так далее.По этой причине полезно попытаться найти официальные или часто используемые названия функций, которые вы используете, чтобы вы знали, что искать.К сожалению, я не думаю, что в настоящее время команда NuGet имеет какие-либо документы по этому сценарию.
Проекты в стиле SDK поддерживают каталог runtime\
в пакете, хотя я думаю, что это также несколько недокументировано.Я не знаю о традиционных проектах, использующих PackageReference
(PR), но packages.config
(ПК) определенно не поддерживает runtimes\
.Для проектов на ПК автор пакета обычно (всегда?) Включает целей сборки для копирования собственных сборок после сборки.В пакете нативные библиотеки находятся в другом месте, часто автор помещает их в каталог build
рядом с целями, но я думаю, что я также видел копию целей из каталога runtime
, так что пакет поддерживает оба ПКи проекты в стиле SDK.
Я предлагаю вам подумать о некоторых обычно используемых нативных библиотеках с привязками .NET и посмотреть, как работает пакет (nupkg
- это просто zip
переименованный).Мои предположения были бы sqlite или curl, или как веб-сервер ядра kestrel asp.net связывает libuv (или делал в более ранних версиях, если это больше не делает).Сейчас я нахожусь в отпуске, поэтому у меня нет мотивации копаться.