Включить сторонние библиотеки DLL в пакет NuGet, созданный из VS csproj - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь создать пакет NuGet из проекта VS 2017, который содержит ссылку на стороннюю DLL (Kendo.mvc.dll).Что бы я ни пытался, я не могу заставить nuget pack автоматически включить эту DLL в папку lib моего пакета NuGet.

Первоначально я создал файл .nuspec из командной строки с помощью команды nuget spec [project's name and path].csproj.Затем я настроил параметры этого файла, в результате чего появился этот файл .nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>our names</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>the description</description>
    <releaseNotes>First release</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>entity-framework-6 mvc5</tags>
  </metadata>
</package>

Затем я использовал nuget pack для создания пакета, что привело к следующему:

Package contents showing no 3rd party DLL was included

Из того, что я прочитал в документации ( MS Docs - Создание пакетов NuGet ), я ожидал, что nuget pack автоматически включит любой источник, отличный от nugetБиблиотеки DLL, указанные в проекте в пакете, но этого не происходит?

Я пробовал следующее, чтобы увидеть, если это что-то меняет, но все безрезультатно:

  • Добавлениеlib папка в корне моего проекта и размещение там DLL (и немного поэкспериментировал с изменением настроек Build Action и Copy to Output Directory).Это создало папку lib в папке Content в пакете NuGet, а не добавление DLL в ту же папку lib, которая содержит DLL сборки.Я сделал это, потому что документы MS говорят о файловой структуре, основанной на соглашении.
  • Ссылка на DLL из папки в C: \ Program Files и установка для свойства Copy Local для DLL значения trueв свойствах

Этот вопрос говорит о добавлении отдельного элемента для сторонней DLL, который, как я предполагаю, относится к явному добавлению файлов в файл .nuspec перед генерациейпакет, например,

  <files>
    <file src="bin\Debug\Kendo.Mvc.???" target="lib\net461" />
  </files>

, который работает, но не следует ли добавить его автоматически, если это необходимо при создании файла .nuspec из файла csproj?

1 Ответ

0 голосов
/ 25 сентября 2018

но не следует ли добавлять это автоматически, если это необходимо при создании файла .nuspec из файла csproj?

Да, библиотеки DLL без использования источников не добавлялись автоматическипо умолчанию при создании файла .nuspec из файла .csproj.

Когда мы генерируем файл .nuspec из файла .csproj, .nuspec включает только основную информацию, например,Название, описание и т. Д.Вы можете получить эту информацию из Информация о сборке, Свойства-> Приложение-> Информация о сборке:

enter image description here

Но она не включает стороннююDLL по умолчанию.

Итак, чтобы включить сторонние DLL, нам нужно вручную явно добавить файлы в файл .nuspec, как и вы.

Проверка Создайте пакет nuget из dll для получения более подробной информации.

Кстати, если сторонняя DLL является библиотекой DLL с исходным кодом, указанным в проекте, вы можете использовать параметр -IncludeReferencedProjects для ее автоматического добавленияпри создании файла .nuspec из файла csproj.

Документ: команда pack (NuGet CLI)

Надеюсь, это поможет.

...