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
。以下是我的测试步骤:
创建测试示例项目“TestReadmeFile
”
通过命令 nuget.exe spec "TestReadmeFile.csproj"
在与 TestReadmeFile.csproj
相同的文件夹中创建 .nupsec
文件,然后定义替换标记($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 ,而无需 将其添加到目标项目。
这里的问题是我使用 <Content include...>
将 README.txt
包含在 .csproj
文件中,而实际上它应该是 <None include...>
- 抱歉,这有点一条红鲱鱼,因为我没有在我的问题中包含此信息!
我负责我们公司发布的一个库作为 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
。以下是我的测试步骤:
创建测试示例项目“
TestReadmeFile
”通过命令
nuget.exe spec "TestReadmeFile.csproj"
在与TestReadmeFile.csproj
相同的文件夹中创建.nupsec
文件,然后定义替换标记($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 ,而无需 将其添加到目标项目。
这里的问题是我使用 <Content include...>
将 README.txt
包含在 .csproj
文件中,而实际上它应该是 <None include...>
- 抱歉,这有点一条红鲱鱼,因为我没有在我的问题中包含此信息!