构建.nuke文件以及构建多个解决方案

3

我第一次使用核弹建造

按照入门指南的步骤,我已经运行了以下命令:

dotnet tool install Nuke.GlobalTool --global
nuke :setup

这经过向导运行后生成了以下内容:
  1. build文件夹,包含一个csharp项目来执行构建
  2. .nuke文件
  3. build.ps1和build.sh以运行构建
.nuke文件似乎包含我在构建过程中选择的解决方案。现在我有几个解决方案位于一个文件夹下,我想要构建它们。因此,我假设可以将它们放在.nuke文件中。
code/solution1/solution1.sln
code/solution2/solution2.sln
code/solution3/solution3.sln

运行build.ps1没有任何效果。它只会构建列表中的第一个解决方案。
而且,关于.nuke文件唯一的帮助是“根目录标记文件;引用默认解决方案文件”。
问题是,使用nuke build,如何在文件夹层次结构下构建多个解决方案?

有一个 Nuke 的 Slack 工作区,网址为 https://slofile.com/slack/nukebuildnet。 - Matthias
3个回答

3

.nuke文件目前主要用于SolutionAttribute。最终将使用global.json替换。如果您正在构建多个解决方案,建议创建一个IEnumerable<Solution>属性,并通过MSBuild或dotnet CLI使用组合调用


2
这也是我的使用场景,我将热切地等待global.json文件 :) 因为我也在想多个解决方案目标/等等的问题,这是我大致收集到的信息:
.nuke文件用于查找注入的RootDirectory(其他内部组件也会使用它),并且如果您在没有参数的情况下使用[Solution]属性,则可以包含默认解决方案。 您可以通过以下方式设置组合调用,如Matthias所述:
1.设置注入的静态解决方案文件:
//inside of build.cs
[Solution("Test1/example1.csproj")]
readonly Solution ExampleSolution1;

[Solution("Test2/example2.csproj")]
readonly Solution ExampleSolution2;
  1. 在运行时创建解决方案对象
//anywhere in any task or function -- if moved, just pass in RootDirectory
IEnumerable<Solution> solutions = new[]{
     ProjectModelTasks.ParseSolution(RootDirectory / "Test1/example1.csproj"),
     ProjectModelTasks.ParseSolution(RootDirectory / "Test2/example2.csproj"),
 };

1
我不相信它是为此而设计的-相反,您需要针对每个解决方案构建一个核弹版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接