当通过msbuild包目标进行打包时,如何更改nuget包中的目标文件名



我有一个csproj文件,其中包含类似的条目

<None Include="library.txt" Pack="true" PackagePath="content" />

该文件作为/content/library.txt正确地包含在nuget包中。有没有办法更改文件名本身(包路径始终只是目录(。I.E.我追求的是nuget中的/content/readme.md,而不更改源文件名或扩展名。

这在香草nuget中是可能的(供参考如何更改NuGet包中的目标文件名?(

这在香草nuget 中是可能的

根据链接的帖子,如果你看看底部的注释,这不是真的。

src和target中的文件扩展名必须匹配,否则指定的目标将被视为目录。

同样的行为也适用于csproj。只要包含文件的文件扩展名与输出文件匹配,它就可以工作。使用以下行可以将library.txt文件作为readme.txt包含在包中。

<None Include="library.txt" Pack="true" PackagePath="/content/readme.txt" />

但是,如果要使用不同的文件扩展名,例如PackagePath="/content/readme.md",则包中的路径将为/content/readme.md/library.txt。请参阅Jon Skeet对GitHub上一个问题的评论。此问题在Visual Studio 2019中仍然存在。

显然,最简单的解决方法是将文件重命名为目标文件名。当然,您可以在构建时复制文件并手动打包,也可以使用MSBuild魔术,但我认为到目前为止,您还不能使用csproj来做到这一点。

最新更新