从Cake迁移至Nuke:如何在Nuke中安装.NET工具?
解决Nuke中安装.NET CLI工具的问题
嘿,我刚从Cake迁移到Nuke的时候也踩过这个坑!你猜的完全没错——PackageExecutable属性确实是为传统NuGet工具包设计的,而你要安装的是.NET CLI工具,得用专门的配置方式。
正确的.NET CLI工具安装方式
在Nuke里,针对.NET CLI工具,你需要使用DotNetTool属性来声明工具,替换掉原来的PackageExecutable:
[DotNetTool(packageId: "my.package.id", Version = "1.0.1")] readonly Tool MyPackagedTool;
几点补充说明:
DotNetTool会自动调用dotnet tool install命令来安装工具,不需要手动指定可执行文件名称(Nuke会自动识别工具包中的默认可执行文件);如果工具的可执行文件名和包ID不一致,你可以额外添加packageExecutable参数来指定。- 第一次运行构建脚本时,Nuke会自动下载并安装这个工具;你也可以手动执行
nuke --restore命令,提前完成所有依赖(包括.NET工具)的恢复。 - 如果你的工具托管在私有NuGet源上,请确保你的
NuGet.config文件中配置了对应的源,或者在Nuke的构建配置中指定了正确的源地址。
和Cake方式的对应关系
你之前在Cake中使用的:
#tool dotnet:?package=my.package.id&version=1.0.1
就对应Nuke里的DotNetTool属性,两者都是基于.NET CLI的工具安装机制;而Cake中的#module nuget:或者#tool nuget:则对应Nuke的PackageExecutable属性,针对的是传统的NuGet工具包。
内容的提问来源于stack exchange,提问作者TheRoadrunner
相关产品推荐
相关产品推荐

