我负责在我们公司发布的库作为NuGet包,我按照“Adding a readme and other files”指南显示readme.txt,其中包含用户在使用Visual时安装或更新包时的重要更改工作室。这是有效的 - 即当你安装包时,会显示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}
答案 0 :(得分:2)
这里的问题是我README.txt
文件中包含.csproj
<Content include...>
文件时<None include...>
真的应该是version: '2'
- 抱歉这有点像红色鲱鱼,因为我没有在我的问题中包含这些信息!
答案 1 :(得分:0)
有谁知道我怎么能阻止这个
要解决此问题,请确保将.nuspec
文件和README.txt
部分中的<files>
文件打包在未定位到 {{1} }。以下是我的测试步骤:
创建测试示例项目“content
”
通过命令TestReadmeFile
在与.nupsec
相同的文件夹中创建TestReadmeFile.csproj
文件,然后替换已定义的令牌($ id $,$ version $等)
在nuspec文件中添加一个只包含readme.txt的部分,如下所示:nuget.exe spec "TestReadmeFile.csproj"
以下是我的.nuspec文件:
<file src="readme.txt" target="" />
<?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>
创建该软件包后,软件包将自动打开readme.txt ,不用将其添加到目标项目中。