如何在Nuke.Build 6.2.1中查找并使用DotNetRestore等方法
Nuke.build 空目标实现及扩展方法引用问题解决
一、所需扩展方法的命名空间
核心构建操作的扩展方法都集中在Nuke.Common.Tools相关命名空间下,你需要在Build.cs顶部添加以下引用:
using Nuke.Common; using Nuke.Common.Tools.MSBuild; using Nuke.Common.Tools.NuGet;
MSBuild命名空间包含清理、编译等基于MSBuild的操作方法NuGet命名空间包含NuGet还原相关方法
二、填充三个目标的具体实现
基于上述命名空间,你可以给空目标添加实际执行逻辑:
Clean 目标(清理项目)
Target Clean => _ => _ .Before(Restore) .Executes(() => { MSBuildTasks.MSBuild(s => s .SetTargetPath(Solution) .SetTargets("Clean")); });
Restore 目标(还原依赖)
两种实现方式任选其一:
Target Restore => _ => _ .Executes(() => { // 方式1:使用NuGet命令还原 NuGetTasks.NuGetRestore(s => s .SetTargetPath(Solution)); // 方式2:使用MSBuild的Restore目标 // MSBuildTasks.MSBuild(s => s // .SetTargetPath(Solution) // .SetTargets("Restore")); });
Compile 目标(编译项目)
Target Compile => _ => _ .DependsOn(Restore) .Executes(() => { MSBuildTasks.MSBuild(s => s .SetTargetPath(Solution) .SetTargets("Build") .SetConfiguration(Configuration)); });
三、补充必要的类属性
上述代码中用到的Solution和Configuration需要在Build类中定义:
[Solution] public readonly AbsolutePath Solution; [Parameter("Configuration to build - Default is 'Debug'")] public readonly Configuration Configuration = Configuration.Debug;
四、运行目标
完成代码填充后,在命令行执行对应命令即可运行目标:
- 执行清理:
nuke Clean - 执行还原:
nuke Restore - 执行编译:
nuke Compile - 直接执行
nuke会默认运行依赖链最终的目标(如Compile)
内容的提问来源于stack exchange,提问作者Dan McCoy
相关产品推荐
相关产品推荐

