Добавить пользовательские файлы в пакет Nuget, чтобы они появлялись в корневом каталоге? - PullRequest
0 голосов
/ 07 мая 2019

Я использую NuGet Версия: 4.9.4.5839.

Я уже создал пакет nuget, который упаковываю и отправляю с помощью следующих команд:

  • dotnet pack myproj.csproj -c Release -o .
  • nuget push myproj.1.0.0.nupkg <key> ....

Все ок.

Я могу использовать этот пакет nuget в других моих проектах.

Но теперь я хочу добавить пользовательские файлы для включения.

Так что, если кто-то извлекает nuget, я хочу, чтобы следующий каталог и файлы были включены в решение потребителя:

Вот что я пробовал:

Я создал папку и файл:

enter image description here

Я также создал файл aaa-health-check-net-core.nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2019</copyright>
    <tags>Tag1 Tag2</tags>
    <contentFiles>
      <files include="any/any/*.txt" buildAction="none" copyToOutput="true"/>
    </contentFiles>
  </metadata>

  <files>
    <file src="aaa\*.txt" target="contentFiles\any\any" />
  </files>
</package>

Хорошо, давайте pack и push.

Как видите, я вижу обновление. и я нажимаю на нее.

enter image description here

Результат:

enter image description here

Вопрос:

Я не хочу, чтобы пользовательский файл отображался там, где он отображается в данный момент.
Я хочу, чтобы он появился в root проекта

Как я могу это сделать?

1 Ответ

1 голос
/ 07 мая 2019

Вы не можете *.

В вашем проекте используется новый проект в стиле SDK, который поддерживает NuGet только через PackageReference, а пакеты PackageReference могут влиять только на выходные данные сборки, но не на файлы проекта.

Проект, использующий традиционный файл проекта и ссылающийся на пакеты NuGet с packages.config, будет копировать файлы из каталога content пакета в проект при установке пакета (но не при восстановлении, поэтому эти файлы должны быть проверил в систему контроля версий). Но проекты в стиле SDK не поддерживают packages.config.

* если вы чувствуете себя немного злым, вы можете включить цели MSBuild, которые создают / копируют / изменяют файлы в проекте при запуске цели. Но нет цели, которая запускается при установке (и даже если бы она существовала, люди, не использующие Visual Studio и не редактирующие файл проекта с помощью текстового редактора, не запустили бы цель в любом случае), поэтому наиболее вероятной целью является запуск при сборке. Скажем, человек, использующий ваш пакет, не хочет, чтобы ваш текстовый файл был в их проекте, поэтому он удаляет его, но каждый раз, когда он строит проект, он воссоздается.

Также, к вашему сведению, dotnet cli поддерживает нажатие dotnet nuget push, поэтому вам может не понадобиться загружать nuget.exe просто для отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...