dotnet-script
"dotnet-script"是github上一個開源的.net core global tool, 項目地址https://github.com/filipw/dotnet-script。使用它,開發人員能夠得到在命令行直接運行C#腳本文件的能力, 且不須要建立任何項目文件。git
dotnet-script
.NET Core 2.1中引入了global tool, 因此你能夠在命令行直接使用如下命令安裝dotnet-script
。github
> 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及以上版本。c#
若是但願卸載dotnet-script
, 請使用一下命令app
> dotnet tool uninstall dotnet-script -g
下面咱們經過一個最簡單的例子,說明一下dotnet-script
的使用方式。oop
首先咱們建立一個helloworld.csx文件, 並在文件中編寫如下代碼學習
Console.WriteLine("Hello World!");
你沒有看錯,這個文件中只有一行代碼,沒有任何的using, namespace等代碼。lua
而後咱們在命令行執行dotnet-script helloworld.csx
, 結果以下,"Hello World!"被正確的輸出了。url
C:\script>dotnet-script helloworld.csx Hello world!
在dotnet-script
能夠支持使用Roslyn #r 語法(#r "nuget: {包名}, {版本號}"
)引用各類Nuget包。spa
例如,下面咱們修改helloworld.csx文件, 引入Newtownsoft.Json
庫,輸出一個序列化以後的字符串。.net
#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
最新版本的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
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,在命令行練習各類代碼。固然開發人員也可使用它編寫一些簡單腳本,而不須要每次都去建立工程項目文件。