Пакет 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
, Ниже приведены мои тестовые шаги:
Создать тестовый образец проекта "
TestReadmeFile
"Создайте
.nupsec
файл в той же папке, что иTestReadmeFile.csproj
по командеnuget.exe spec "TestReadmeFile.csproj"
затем определены токены замены ($id$, $version$ и т. д.)Добавьте раздел в файл 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>
- Упакуйте.nuspec из командной строки:
nuget.exe pack "TestReadmeFile.csproj.nuspec"
После создания этого пакета он автоматически откроет файл readme.txt, не добавляя его в целевой проект.