Nuke构建.nuke文件并构建多个解决方案

时间:2019-10-17 19:18:00

标签: c# build msbuild nuke-build

我第一次使用nuke build

在完成getting started指南的过程中,我执行了以下操作:

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

这通过一个向导运行,该向导生成:

  1. 包含用于构建的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构建,如何在文件夹层次结构下构建多个解决方案?

3 个答案:

答案 0 :(得分:1)

我不认为它是为此设计的-相反,您需要为每个解决方案构建一个核子。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这也是我的用例,我将热切地等待global.json文件:)由于我还想知道多个解决方案目标/等,因此这大致就是我收集的内容:

.nuke文件可用于查找注入的RootDirectory(供其他内部afaik使用),如果您使用不带参数的[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"),
 };
相关问题