Самый чистый способ включить все необходимые библиотеки DLL в один пакет nuget? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь создать пакет nuget из двоичного модуля PowerShell, который оборачивает другой проект C # Main Library.Я изо всех сил пытаюсь получить все необходимые библиотеки DLL, включенные в сгенерированный пакет nuget, потому что основная библиотека имеет множество зависимостей пакета nuget, которые не включены.

Причина, по которой я хочу, чтобы пакет nuget включал обаDLL-файлы двух проектов, а также необходимые DLL-файлы главной библиотеки, так что я могу создать файл psd1 для двоичного модуля PowerShell, в котором будут все необходимые DLL-библиотеки в поле RequiredAssemblies.Это необходимо, поскольку все необходимые библиотеки DLL должны быть импортированы перед импортом основного двоичного файла DLL модуля PowerShell.

Ниже приведена структура пакета, которую я ищу:

Package
- lib
  - netstandard2.0
    - PowerShellModule.dll
    - PowerShellModule.psd1
    - MainLibrary.dll
    - MainLibraryDep1.dll
    - MainLibraryDep2.dll
    - ...

Как только пакет nugetПосле установки

при использовании nuget pack -IncludeProjectReferences в папке проекта двоичного модуля PowerShell он успешно включает в себя двоичную библиотеку DLL модуля PowerShell и библиотеку главной библиотеки вокончательный пакет, но ни одна из зависимостей nuget, которые есть в главной библиотеке.Есть ли способ включить их?

Одним из решений, о котором я подумал, было просто создать двоичный модуль PowerShell и убедиться, что он сгенерировал все необходимые библиотеки DLL (включая библиотеки для основной библиотеки), скопировав эти файлы в папку иУпаковка этой папки, однако, кажется очень хакерской, и я не очень хочу этого делать.

Я также знаю, что мне нужно просто собрать двоичный проект модуля PowerShell как отдельный пакет nuget, который зависит отОсновная библиотека, которая, в свою очередь, имеет все свои зависимости, однако это будет означать, что после установки всех пакетов каждое из полей RequiredAssemblies в файле psd1 должно будет несколько раз выпрыгнуть из текущего каталога, используя ..\..\, чтобы он мог получитьв один из других зависимых пакетов, чтобы импортировать их файл DLL.Это связано с тем, что nuget устанавливает свои пакеты, и, насколько я знаю, вы не можете изменить это.

...