关于 msbuild:如何更改 NuGet 包中的目标文件名?

How do I change target filename in NuGet Package?

JavaScript 命名约定要求文件名中包含版本号,例如 jQuery.1.34.min.js,并且我有文本模板,它将在输出文件夹中输出 my-library.js

我想用 my-library.js 创建 NuGet 包,在安装时它应该被部署为 my-library.1.34.js

如果我在 msbuild 过程中构建 nuget 包,我无法重命名我的输出 js 文件。

我已经有一个很长的解决方法,其中我有一个控制台应用程序,它将文件复制到给定版本号的文件夹结构,然后它构建一个 nuspec 文件,然后将它传递给 nuget.exe,如果有的话简单,我想避免这么长的步骤。


我发现我可以通过为目标指定完整的文件名来重命名包含文件。

例如(nuspec 片段):

1
2
3
<files>
<file src="my-library.js" target="content/my-library.$VERSION$.js">
</files>

并且 nuget 会像这样运行:

1
nuget.exe pack mypackage.nuspec -Prop VERSION=1.34

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