3

我是第一次使用nuke 构建

通过入门指南,我运行了以下内容:

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

这通过生成的向导运行:

  1. build 文件夹包含一个 csharp 项目来进行构建
  2. .nu​​ke 文件
  3. build.ps1 和 build.sh 运行构建

.nu​​ke 文件似乎包含我在构建过程中选择的解决方案。现在,我在要构建的文件夹下有一些解决方案。

所以我假设我可以将它们放入.nuke文件中。

code/solution1/solution1.sln
code/solution2/solution2.sln
code/solution3/solution3.sln

无济于事。当我运行 build.ps1 时,它只构建列表中的第一个解决方案。

我看到的关于 .nuke 文件的唯一帮助是“根目录标记文件;引用默认解决方案文件”

问题是,使用 nuke 构建,我如何在文件夹层次结构下构建多个解决方案?

4

3 回答 3

3

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

于 2019-11-01T00:19:13.273 回答
2

这也是我的用例,我将热切地等待 global.json 文件:) 因为我也想知道多个解决方案目标/等,这大​​致是我收集到的:

.nu​​ke 文件用于查找注入的 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"),
 };
于 2020-07-13T04:26:03.303 回答
1

我不相信它是为此而设计的——相反,您需要为每个解决方案构建一个 nuke。

于 2019-10-24T21:11:30.890 回答