日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

cake-build -.Net Core 跨平台构建自动化系统。

發布時間:2023/12/4 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cake-build -.Net Core 跨平台构建自动化系统。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

Cake (C# Make) 是一個帶有 C# DSL 的構建自動化系統,用于執行編譯代碼、復制文件/文件夾、運行單元測試、壓縮文件和構建 NuGet 包等操作。

地址

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");} }

該文件還包含三個任務類:

[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 asynchronouspublic 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");} }

和HelloTask類WorldTask可以刪除。

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官網。

最后大家如果喜歡我的文章,還麻煩給個關注, 希望net生態圈越來越好!

總結

以上是生活随笔為你收集整理的cake-build -.Net Core 跨平台构建自动化系统。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。