我有一个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
来做到这一点。