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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序

發布時間:2023/12/2 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在我們開發中可能需要設計一次性應用程序,這些實用程序可以利用接近原始源代碼的優勢,但可以在與主Web應用程序完全獨立的安全性上下文中啟動。具體在?[管理過程](https://12factor.net/admin-processes)中也已經列出了原因。

創建控制臺應用

打開命令提示符,創建創建一個ConsoleDemo的文件夾,鍵入如下片段

dotnet new console

dotnet rundotnet runHello World!

或者我們還可以通過?dotnet build?來編譯代碼,無需運行已生成的控制臺應用程序,這回基于項目的名稱將已編譯的應用程序作為DLL文件生成。在這種情況下,創建的文件命名為?ConsoleDemo.dll?。此時我們可以使用Windows上的dotnet bin\Debug\netcoreapp3.1\ConsoleDemo.dll 運行(非 Windows 系統使用 /)。

dotnet bin\Debug\netcoreapp3.1\ConsoleDemo.dll

Hello World!

在編譯應用時,會隨ConsoleDemo.dll一起創建特定于操作系統可執行文件。在Windows上,這將是ConsoleDemo.exe;在Linux或者macOS上,這將是ConsoleDemo.在上面的示例中,用ConsoleDemo.exeConsoleDemo命名該文件。可以直接運行該可執行文件。


.\bin\Debug\netcoreapp3.1\ConsoleDemo.exe

Hello World!

使用命令行參數庫構建

首先我們先引入到我們控制臺應用中如下包


Install-Package McMaster.Extensions.CommandLineUtils

Attribute API


using System;
using McMaster.Extensions.CommandLineUtils;

public class Program
{
public static int Main(string[] args)
=> CommandLineApplication.Execute(args);
[Option(Description = "The subject")]public string Subject { get; }
[Option(ShortName = "n")]public int Count { get; }private void OnExecute()
{var subject = Subject ?? "world";for (var i = 0; i < Count; i++)
{
Console.WriteLine($"Hello {subject}!");
}
}
}

Builder API

using System;
using McMaster.Extensions.CommandLineUtils;

public class Program
{
public static int Main(string[] args)
{
var app = new CommandLineApplication();

app.HelpOption();
var optionSubject = app.Option("-s|--subject ", "The subject", CommandOptionType.SingleValue);
var optionRepeat = app.Option<int>("-n|--count ", "Repeat", CommandOptionType.SingleValue);

app.OnExecute(() =>
{
var subject = optionSubject.HasValue()
? optionSubject.Value()
: "world";

var count = optionRepeat.HasValue() ? optionRepeat.ParsedValue : 1;
for (var i = 0; i < count; i++)
{
Console.WriteLine($"Hello {subject}!");
}
return 0;
});

return app.Execute(args);
}
}

上述代碼直接來自官方....這邊我偷個懶不自己寫了.

我們測試一下


dotnet run -help
Usage: [options]

Options:
-?|-h|--help Show help information
-s|--subject The subject
-n|--count Repeatdotnet run -s Fh
Hello Fh!

[Command]
這些屬性全部由CommandLineUtils提供,以生成實際的命令行解析器。 Command代表具有"選項"和"參數"的"Command"(轉到數字)。任何裝飾了的類[Command]還必須實現一個稱為OnExecute()或的方法OnExecuteAsync()。返回類型必須為void或int(Task或Task在異步變量的情況下),并且參數將從您的依賴項注入容器(在這種情況下為Microsoft.Extensions.Dependency.Injection)中注入。

[HelpOption]
有許多帶有單詞"Option"的屬性。這些都增加了命令將接受的命令行選項。在這種情況下,我們希望頂層命令使用默認值-h或--help選項提供幫助。完成此操作后,子命令還將以類似方式提供幫助。

[Subcommand]
[Subcommand]屬性對于指示哪些命令將成為當前命令的子命令是必需的。在編譯時知道代碼中的所有子命令對于基于約定的優化來說已經很成熟了。選擇以當前方式進行組織可以使我們在各個命令之間重用子命令。

Reference

https://natemcmaster.github.io/CommandLineUtils/v2.5/api/McMaster.Extensions.CommandLineUtils.OptionAttribute.html

https://github.com/hueifeng/BlogSample/tree/master/src/ConsoleDemo

使用優惠口令「dotnet123?到手僅¥89,限前200

總結

以上是生活随笔為你收集整理的控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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