通过msbuild pack target打包时,如何更改nuget包中的目标文件名?

通过msbuild pack target打包时,如何更改nuget包中的目标文件名?,msbuild,nuget,csproj,Msbuild,Nuget,Csproj,我有一个csproj文件,其中包含如下条目 <None Include="library.txt" Pack="true" PackagePath="content" /> 该文件作为/content/library.txt正确包含在nuget包中。 有没有办法更改文件名本身(包路径始终只是目录)。也就是说,我想要的是 nuget中的/content/readme.md,无需更改源文件名或扩展名 这在vanilla n

我有一个
csproj
文件,其中包含如下条目

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

该文件作为
/content/library.txt
正确包含在nuget包中。 有没有办法更改文件名本身(包路径始终只是目录)。也就是说,我想要的是 nuget中的
/content/readme.md
,无需更改源文件名或扩展名

这在vanilla 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那里看到这个。这个问题在VisualStudio2019中仍然存在


显然,最简单的解决方法是将文件重命名为目标文件名。当然,您可以在生成时复制文件并手动打包,或者使用MSBuild magic,但我认为您目前无法使用
csproj
执行此操作。

Nice不知道。