栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

尝鲜.net core2.1 ——编写一个global tool

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尝鲜.net core2.1 ——编写一个global tool

本文内容参考微软工程师Nate McMaster的博文.NET Core 2.1 Global Tools

用过npm开发都知道,npm包都可以以全局的方式安装,例如安装一个http-server服务,可以使用npm i http-server -g来将http-server包安装到全局环境。安装完之后,就可以通过cmd或者powershell运行全局工具http-server命令,来使用静态托管服务。dotnet tool 就是一个类似npm全局工具的新特性,在.net core2.1正式加入。它的详细使用方法可在微软官方文档查看,本文主要介绍如何编写一个global tool并发布至nuget。

安装.net core 2.1

安装最新版.net core SDK 可前往DotNet官方站点的下载页面,下载完成后双击安装即可。安装完成后打开cmd运行dotnet --version 返回版本大于或等于2.1.300表示安装成功。

安装global tool 项目模板

打开cmd 键入dotnet new --install McMaster.DotNet.GlobalTool.Templates安装完成后运行dotnet new

模板                                                短名称                语言                标记

----------------------------------------------------------------------------------------------------------------------------

Console Application                               console            [C#], F#, VB      Common/Console

Class library                                     classlib           [C#], F#, VB      Common/Library

.NET Core Global Console Tool                     global-tool        [C#]              Console/Empty

Unit Test Project                                 mstest             [C#], F#, VB      Test/MSTest

xUnit Test Project                                xunit              [C#], F#, VB      Test/xUnit

Razor Page                                        page               [C#]              Web/ASP.NET

MVC Viewimports                                   viewimports        [C#]              Web/ASP.NET

MVC ViewStart                                     viewstart          [C#]              Web/ASP.NET

ASP.NET Core Empty                                web                [C#], F#          Web/Empty

ASP.NET Core Web App (Model-View-Controller)      mvc                [C#], F#          Web/MVC

ASP.NET Core Web App                              razor              [C#]              Web/MVC/Razor Pages

ASP.NET Core with Angular                         angular            [C#]              Web/MVC/SPA

ASP.NET Core with React.js                        react              [C#]              Web/MVC/SPA

ASP.NET Core with React.js and Redux              reactredux         [C#]              Web/MVC/SPA

Razor Class Library                               razorclasslib      [C#]              Web/Razor/Library/Razor Class Library

ASP.NET Core Web API                              webapi             [C#], F#          Web/WebAPI

global.json file                                  globaljson                           Config

NuGet Config                                      nugetconfig                          Config

Web Config                                        webconfig                            Config

Solution File                                     sln                                  Solution

多出一个global-tool模板

.NET Core Global Console Tool    global-tool     
 [C#]              Console/Empty
编写一个网页下载工具

接下来通过编写一个网页下载的小工具来演示global tool的创建过程,此小工具的功能是根据网址,下载相应的页面html并保存为文件。

首先新建一个WebDownloader文件夹。在文件夹中运行dotnet new global-tool生成项目如下

objProgram.csWebDownloader.csproj

打开WebDownloader.csproj修改为



  
    web-downloader
    True
    Exe
    netcoreapp2.1
  

  
    
  

打开Program.cs修改为

using System;

using System.ComponentModel.DataAnnotations;

using System.IO;

using System.Net.Http;

using McMaster.Extensions.CommandLineUtils;


namespace WebDownloader

{

    [Command(Description = "网页下载小工具")]

    class Program

    {

        public static int Main(string[] args) => CommandLineApplication.Execute(args);


        [Argument(0, Description = "网址")]

        [Required]

        public string Url { get; }


        [Option(Description = "保存路径")]

        public string Path { get; } = "./";


        [Option(Description = "文件名")]

        public string Name { get; } = "content.txt";


        private int onExecute()

        {

            var client = new HttpClient();

            var content = client.GetStringAsync(Url).Result;

            var path = System.IO.Path.Combine(Path, Name);

            File.WriteAllText(path, content);

            return 0;

        }

    }

}

修改完成后全部保存文件,运行dotnet pack -o ./会在项目根目录生成一个WebDownloader.1.0.0.nupkg包。此包就是最终的nuget包,可上传至nuget.org共享。

为了测试,我们直接将此包安装至本地计算机。运行dotnet tool install WebDownloader -g --add-source ./完成安装。运行web-downloader -h可以看到项目帮助文档

网页下载小工具Usage: WebDownloader [arguments] [options]Arguments:
  Url               网址Options:
  -p|--path   保存路径
  -n|--name   文件名
  -?|-h|--help      Show help information

运行web-downloader http://www.sina.com后我们发现项目根目录生成了一个content.txt文件内容为新浪的首页html


    
    
    新浪首页
    
    
    
    
    
    
    
    
    
    
    ...
...

如果不再使用此工具通过dotnet tool uninstall WebDownloader -g卸载即可。


原文地址:https://www.cnblogs.com/huanent/p/9119213.html


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号