【问题标题】:Nuke build .nuke file and build multiple solutionsNuke 构建 .nuke 文件并构建多个解决方案
【发布时间】:2020-02-14 18:34:36
【问题描述】:

我是第一次使用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 构建,我如何在一个文件夹层次结构下构建多个解决方案?

【问题讨论】:

标签: c# build msbuild nuke-build


【解决方案1】:

这也是我的用例,我会急切地等待 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"),
 };

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-24
        • 2020-06-29
        • 1970-01-01
        • 2016-09-24
        • 2020-12-02
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        相关资源
        最近更新 更多