zoukankan      html  css  js  c++  java
  • .NET Core脚本工具dotnet-script

    什么是dotnet-script

    "dotnet-script"是github上一个开源的.net core global tool, 项目地址https://github.com/filipw/dotnet-script。使用它,开发人员可以获得在命令行直接运行C#脚本文件的能力, 且不需要创建任何项目文件。

    安装/卸载dotnet-script

    .NET Core 2.1中引入了global tool, 所以你可以在命令行直接使用以下命令安装dotnet-script

    > dotnet tool install -g dotnet-script
    You can invoke the tool using the following command: dotnet-script
    Tool 'dotnet-script' (version '0.26.1') was successfully installed.
    

    Tips: 为了使用global tool, 请安装.NET Core SDK 2.1.300及以上版本。

    如果希望卸载dotnet-script, 请使用一下命令

    > dotnet tool uninstall dotnet-script -g
    

    创建第一个HelloWorld脚本

    下面我们通过一个最简单的例子,说明一下dotnet-script的使用方式。

    首先我们创建一个helloworld.csx文件, 并在文件中编写以下代码

    Console.WriteLine("Hello World!");
    

    你没有看错,这个文件中只有一行代码,没有任何的using, namespace等代码。

    然后我们在命令行执行dotnet-script helloworld.csx, 结果如下,"Hello World!"被正确的输出了。

    C:script>dotnet-script helloworld.csx
    Hello world!
    

    创建一个添加Nuget引用的脚本

    dotnet-script可以支持使用Roslyn #r 语法(#r "nuget: {包名}, {版本号}")引用各种Nuget包。

    例如,下面我们修改helloworld.csx文件, 引入Newtownsoft.Json库,输出一个序列化之后的字符串。

    #r "nuget: Newtonsoft.Json, 11.0.2"
    
    using Newtonsoft.Json;
    
    Console.WriteLine(JsonConvert.SerializeObject(new {
            Message = "HelloWorld!"
    }));
    

    我们使用命令行dotnet-script helloworld.csx重新运行helloworld.csx文件, 结果如下

    C:script>dotnet-script helloworld.csx
    {"Message":"HelloWorld!"}
    

    Tips: 这里使用的是默认的Nuget源, 如果你想手动添加其他Nuget源, 运行脚本的时候,请添加-s参数, 例dotnet script foo.csx -s https://SomePackageSource

    EHRL

    最新版本的dotnet-script还支持了EHRL - Read Evaluate Print Loop, 即读取-求值-打印-循环, 这是一个在诸如Ruby、Python和Lisp这样的动态语言才有的特性。

    开发人员可以在命令行使用dotnet script命令, 进入EHRL模式, 根据你输入的表达式, dotnet-script会帮你打印出表达式的结果。

    例:

    C:script>dotnet script
    > 2+2
    4
    > var myName = "Lamond Lu";
    > Console.WriteLine(myName.ToUpper());
    LAMOND LU
    >
    

    当然在这里你也可以使用Roslyn #r 语法(#r "nuget: {包名}, {版本号}")引用各种Nuget包, 例:

    C:script>dotnet script
    > #r "nuget: Automapper, 6.1.1"
    > using AutoMapper;
    > typeof(MapperConfiguration)
    [AutoMapper.MapperConfiguration]
    >
    

    除此之外,EHRL中,还支持多行代码模式。 dotnet-script会帮助你检测代码块是否完整,如果当你点击回车的时候,代码块不完整,就会出现*开头的新行。

    C:script>dotnet script
    > public class Foo{
    * public string Name{get;set;}
    * }
    > var foo = new Foo();
    >
    
    

    运行远程脚本

    除了运行本地脚本,最新版本的dotnet-script还添加了运行远程脚本的功能,你需要使用http/https将你的脚本文件暴露出来。

    例:

    C:script>dotnet script https://tinyurl.com/y8cda9zt
    Hello World
    

    编译DLL或EXE文件

    dotnet-script还支持根据csx脚本文件,生成EXE或DLL文件。

    可用的参数列表如下:

    参数 说明
    -o 指定文件生成的目录,默认当前目录
    -n 指定生成的文件名
    -c 指定使用的配置[Release/Debug]
    -d 是否启用Debug输出
    -r 指定运行时

    我们以第一个HelloWorld.csx为例

    C:script>dotnet-script publish helloworld.csx
    Published C:scripthelloworld.csx (executable) to C:scriptpublishwin10-x64
    

    运行以上命令后,dotnet-script会使用SCD(Self-contained deployments)的方式生成script.dll和script.exe及运行它所需要的所有基础库。

    总结

    dotnet-script作为了一个global tool, 相当简单易用, 使用它,你可以像学习Python一样学习.NET Core,在命令行练习各种代码。当然开发人员也可以使用它编写一些简单脚本,而不需要每次都去创建工程项目文件。

  • 相关阅读:
    IOI 1996 网络协议
    lougu P2344奶牛抗议
    Poj3764 The XOR-longest Path
    A Simple Problem with Integers (线段树)
    NOIP2011 选择客栈
    20181029 T3 乐谱分段
    20181029 T2 寻宝游戏
    20181029 T1 教科书般的亵渎
    NOIP2011聪明的质监员
    浅谈AC自动机
  • 原文地址:https://www.cnblogs.com/lwqlun/p/9820366.html
Copyright © 2011-2022 走看看