NuGet 包 - readme.txt 被添加到目标项目,而不是仅仅被显示

NuGet package - readme.txt being added to target project, instead of just being displayed

我负责我们公司发布的一个库作为 NuGet 包,我按照“Adding a readme and other files”指南展示了一个 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}

Does anyone know how I can stop this

要解决此问题,请确保将 .nuspec 文件和 README.txt 文件打包到 <files> 部分 而非 content。以下是我的测试步骤:

  1. 创建测试示例项目“TestReadmeFile

  2. 通过命令 nuget.exe spec "TestReadmeFile.csproj" 在与 TestReadmeFile.csproj 相同的文件夹中创建 .nupsec 文件,然后定义替换标记($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 ,而无需 将其添加到目标项目。

这里的问题是我使用 <Content include...>README.txt 包含在 .csproj 文件中,而实际上它应该是 <None include...> - 抱歉,这有点一条红鲱鱼,因为我没有在我的问题中包含此信息!