Пакет NuGet - readme.txt добавляется в целевой проект, а не просто отображается

Я отвечаю за библиотеку, опубликованную в нашей компании в виде пакета NuGet, и я следовал руководству " Добавление файла readme и других файлов", чтобы показать файл readme.txt, содержащий важные изменения, когда пользователи устанавливают или обновляют пакет при использовании Visual Studio. Это работает - т.е. когда вы устанавливаете пакет, отображается readme.txt. Однако при установке пакета эти файлы readme.txt также копируются в корневой каталог целевого проекта.

Кто-нибудь знает, как я могу это остановить (т.е. показать readme.txt при установке, но не добавлять его в целевой проект)? Пользователям очень полезно видеть этот файл, но он может сбить с толку, если он будет добавлен в проект.

.Nuspec для библиотеки, как показано ниже:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <projectUrl>http://example.com/blah/blah</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
  </metadata>
  <files>
    <file src="README.txt" target="" />
  </files>
</package>

Упаковка + отправка обычно выполняется на этапе сборки TeamCity, но если я собираю pkg, используя следующую командную строку, то происходит такое же поведение:

$ nuget pack MyLibrary.csproj
$ nuget push MyLibrary-{version}.nupkg -source {internal-nuget-server}

2 ответа

Решение

Проблема заключалась в том, что у меня было README.txt включены в .csproj использование файла <Content include...> когда на самом деле это должно было быть <None include...> - извините, это было что-то вроде красной сельди, так как я не включил эту информацию в свой вопрос!

Кто-нибудь знает, как я могу это остановить

Чтобы решить эту проблему, убедитесь, что .nuspec файл и README.txt файл в <files> раздел не предназначен для content, Ниже приведены мои тестовые шаги:

  1. Создать тестовый образец проекта "TestReadmeFile"

  2. Создайте .nupsec файл в той же папке, что и TestReadmeFile.csproj по команде nuget.exe spec "TestReadmeFile.csproj"затем определены токены замены ($id$, $version$ и т. д.)

  3. Добавьте раздел в файл nuspec, содержащий только readme.txt, например: <file src="readme.txt" target="" />

Ниже мой файл.nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>TestReadmeFile</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
  <files>
    <file src="bin\Debug\TestReadmeFile.dll" target="lib\net462" />
    <file src="README.txt" target="" />
  </files>
</package>
  1. Упакуйте.nuspec из командной строки: nuget.exe pack "TestReadmeFile.csproj.nuspec"

После создания этого пакета он автоматически откроет файл readme.txt, не добавляя его в целевой проект.

Другие вопросы по тегам