cake-build-. NET Coreクロスプラットフォームビルドオートメーションシステム

cake-build-. NET Coreクロスプラットフォームビルドオートメーションシステム

Cake C#Makeは、コードのコンパイル、ファイル/フォルダのコピー、単体テストの実行、ファイルの圧縮、NuGetパッケージのビルドなどの操作を実行するためのC#DSLを備えたビルド自動化システムです。

最后更新 2022/07/12 20:13
黑哥聊dotNet
预计阅读 3 分钟
分类
.NET
标签
.NET C# NuGet

プレゼンテーション:プレゼンテーション

Cake C#Makeは、コードのコンパイル、ファイル/フォルダのコピー、単体テストの実行、ファイルの圧縮、NuGetパッケージのビルドなどの操作を実行するためのC#DSLを備えたビルド自動化システムです。

地址:https://cakebuild.net/docs

構築する。

このチュートリアルでは、ソリューションの一部として標準コンソールアプリケーションとしてビルドを記述できるCake Frostingを使用します。Cakeビルドの実行方法に関するその他のオプション。

以下说明需要在 .NET Core 3.1.301 或更高版本上运行 Cake Frosting 1.0.0 或更高版本。您可以在https://dotnet.microsoft.com/download找到 .NET SDK

新しいCake Frostingプロジェクトを作成するには、Frostingテンプレートをインストールする必要があります。

dotnet new --install Cake.Frosting.Template

新しいFrostingプロジェクトの作成:

dotnet new cakefrosting

これにより、Cake Frostingプロジェクトとブートストラップスクリプトが作成される。

初期構築プロジェクト

Programクラスには、Cakeの設定と実行のためのコードが含まれます。

public static class Program
{
    public static int Main(string[] args)
    {
        return new CakeHost()
            .UseContext<BuildContext>()
            .Run(args);
    }
}

该类BuildContext可用于添加其他自定义属性。Delay默认模板包含一个可以通过参数设置的示例属性--delay。您可以删除此属性并根据您的特定需求自定义属性。

public class BuildContext : FrostingContext
{
    public bool Delay { get; set; }

    public BuildContext(ICakeContext context)
        : base(context)
    {
        Delay = context.Arguments.HasArgument("delay");
    }
}

このファイルには、次の3つのタスククラスも含まれます。

[TaskName("Hello")]
public sealed class HelloTask : FrostingTask<BuildContext>
{
    public override void Run(BuildContext context)
    {
        context.Log.Information("Hello");
    }
}

[TaskName("World")]
[IsDependentOn(typeof(HelloTask))]
public sealed class WorldTask : AsyncFrostingTask<BuildContext>
{
    // Tasks can be asynchronous
    public override async Task RunAsync(BuildContext context)
    {
        if (context.Delay)
        {
            context.Log.Information("Waiting...");
            await Task.Delay(1500);
        }

        context.Log.Information("World");
    }
}

[TaskName("Default")]
[IsDependentOn(typeof(WorldTask))]
public class DefaultTask : FrostingTask
{
}

Default任务对World有依赖性。该World任务是一个异步任务Delay,如果设置了属性,则等待一秒半。

サンプル構築パイプライン

次の例では、タスク、MsBuildソリューションをコンパイルするタスク、およびソリューションをテストするタスクを含む単純なビルドパイプラインを作成します。

次の例では、Visual Studioソリューションのリポジトリルートフォルダのsrc/Example.sが必要です。

必要なusingステートメントを追加するには、次の手順に従います。

using Cake.Common;
using Cake.Common.IO;
using Cake.Common.Tools.DotNet;
using Cake.Common.Tools.DotNet.Build;
using Cake.Common.Tools.DotNet.Test;

从类中删除Delay属性BuildContext并添加一个属性MsBuildConfiguration,它存储应该构建的解决方案的配置:

public class BuildContext : FrostingContext
{
    public string MsBuildConfiguration { get; set; }

    public BuildContext(ICakeContext context)
        : base(context)
    {
        MsBuildConfiguration = context.Argument("configuration", "Release");
    }
}

HelloTaskWorldTask可以删除。

CleanTask为清理目录的任务创建一个新类:

[TaskName("Clean")]
public sealed class CleanTask : FrostingTask<BuildContext>
{
    public override void Run(BuildContext context)
    {
        context.CleanDirectory($"../src/Example/bin/{context.MsBuildConfiguration}");
    }
}

ソリューションを構築するBuildTaskの新しいクラスを作成します。

[TaskName("Build")]
[IsDependentOn(typeof(CleanTask))]
public sealed class BuildTask : FrostingTask<BuildContext>
{
    public override void Run(BuildContext context)
{
        context.DotNetBuild("../src/Example.sln", new DotNetBuildSettings
        {
            Configuration = context.MsBuildConfiguration,
        });
    }
}

ソリューションをテストするTestTaskの新しいクラスを作成します。

[TaskName("Test")]
[IsDependentOn(typeof(BuildTask))]
public sealed class TestTask : FrostingTask<BuildContext>
{
    public override void Run(BuildContext context)
{
        context.DotNetTest("../src/Example.sln", new DotNetTestSettings
        {
            Configuration = context.MsBuildConfiguration,
            NoBuild = true,
        });
    }
}

更新DefaultTask类以调用新任务:

[IsDependentOn(typeof(TestTask))]
public sealed class Default : FrostingTask
{
}

構築スクリプトの実行

構築スクリプトの実行

./build.ps1

更多文档请前往 cake-build 官网:https://cakebuild.net

最后に皆は私の文章が好きなら、まだ迷惑をかけて注意を与える、希望. NET生態圏がますます良くなる!

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/05/24

こんにちは. NET run fileさよならcsproj

この記事では、開発者がプロジェクトファイルを作成せずにC#ソースファイルを直接実行できるようにする. NET CLIの新しいファイル形式プログラム機能を紹介します。この機能は、メモリ内で仮想プロジェクトファイルを生成し、NuGet依存パッケージとプロジェクトプロパティ設定をサポートすることで、スクリプトやシンプルなアプリケーションの開発を容易にします。また、ターゲットパスの拡張、コマンドラインパラメータの統一、パフォーマンスの向上、ファイル型プログラムコマンドのサポートの強化など、この機能の将来の方向性についても説明しています。

继续阅读
同分类 / 同标签 2026/04/22

バージョン別の. NETサポート状況(250 7 0 7更新)

仮想マシンとテストマシンを使用して、各バージョンのオペレーティングシステムの. NETサポートをテストします。オペレーティングシステムのインストール後、対応するランタイムを測定し、スターダストエージェントをパスとして実行できます。

继续阅读