什么是 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:\script\helloworld.csx (executable) to C:\script\publish\win10-x64
运行以上命令后, dotnet-script 会使用 SCD(Self-contained deployments)的方式生成 script.dll 和 script.exe 及运行它所需要的所有基础库.
总结
dotnet-script 作为了一个 global tool, 相当简单易用, 使用它, 你可以像学习 Python 一样学习. NET Core, 在命令行练习各种代码. 当然开发人员也可以使用它编写一些简单脚本, 而不需要每次都去创建工程项目文件.
来源: https://www.cnblogs.com/lwqlun/p/9820366.html