当前位置:   article > 正文

必备 .NET - C# 脚本

c# 脚本

作者:Mark Michaelis | 2016 1

Link: https://msdn.microsoft.com/zh-cn/magazine/mt614271.aspx

随着 Visual Studio 2015 Update 1(下文简称 Update 1)的发布,引出了全新的 C# 读取-求值-打印-循环 (REPL),它可作为 Visual Studio 2015 内的全新交互窗口或新命令行接口 (CLI),称为 CSI。除了将 C# 语言引入命令行外,Update 1 还引入了全新的 C# 脚本语言,以前通常保存到 CSX 文件。

深入探讨全新 C# 脚本之前,必须了解目标场景。C# 脚本是一款用于测试 C# 和 .NET 代码段的工具,无需创建多个单元测试或控制台项目。它提供了轻型选项,可快速在命令行上对 LINQ 聚合方法进行编码、检查 .NET API 是否解压缩文件或调用 REST API,以了解返回的内容或工作原理。它提供了探索和了解 API 的简便方法,无需对 %TEMP% 目录中的另一个 CSPROJ 文件支付开销。

C# REPL 命令行界面 (CSI.EXE)

正如学习 C# 自身,入手学习 C# REPL 界面的最好方法是运行它并开始执行命令。要启动它,从 Visual Studio 2015 开发者命令提示符运行命令 csi.exe,或使用完整路径 C:\Program Files (x86)\MSBuild\14.0\bin\csi.exe。从此处开始执行 C# 语句,如 1 所示。

1 CSI REPL 示例

C:\Program Files (x86)\Microsoft Visual Studio 14.0>csi

Microsoft (R) Visual C# Interactive Compiler version 1.1.0.51014

Copyright (C) Microsoft Corporation. All rights reserved.

Type "#help" for more information.

> System.Console.WriteLine("Hello! My name is Inigo Montoya");

Hello! My name is Inigo Montoya

> ConsoleColor originalConsoleColor  = Console.ForegroundColor;

> try{

.  Console.ForegroundColor = ConsoleColor.Red;

.  Console.WriteLine("You killed my father. Prepare to die.");

. }

. finally

. {

.  Console.ForegroundColor = originalConsoleColor;

. }

You killed my father. Prepare to die.

> IEnumerable<Process> processes = Process.GetProcesses();

> using System.Collections.Generic;

> processes.Where(process => process.ProcessName.StartsWith("c") ).

.  Select(process => process.ProcessName ).Distinct()

DistinctIterator { "chrome", "csi", "cmd", "conhost", "csrss" }

> processes.First(process => process.ProcessName == "csi" ).MainModule.FileName

"C:\\Program Files (x86)\\MSBuild\\14.0\\bin\\csi.exe"

> $"The current directory is { Environment.CurrentDirectory }."

"The current directory is C:\\Program Files (x86)\\Microsoft Visual Studio 14.0."

>

首先注意到的显然是它类似于 C#—尽管是 C# 新的方言(但整个生产程序没有任何繁琐程序,且在应急原型中是不必要的)。因此,正如您所期望的那样,如果您想要调用静态方法,您可以写出完全限定的方法名称并在圆括号内传递参数。正如在 C# 中,您通过将变量添加为类型的前缀来声明变量,并在声明时选择性地分配给它一个新值。同样,正如您所期望的那样,任何有效方法正文语法—try/catch/finally 块、变量声明、Lambda 表达式和 LINQ—均可无缝运行。

即使在命令行上,其他 C# 功能也可保持,如字符串构造(区分大小写、字符串文本和字符串插值)。因此,当您要使用或输出路径时,需要使用 C# 转义字符 ("\") 或字符串文本避开反斜杠,如同 csi.exe 路径输出中的双反斜杠。字符串插值运行方式也如同 1 演示的"当前目录"示例行,

尽管 C# 脚本支持的远不止语句和表达式。您可以声明自定义类型、通过属性嵌入类型元数据,甚至可以使用特定于 C# 脚本的陈述句简化赘言。考虑 2 中的拼写检查示例。

2 C# 脚本类拼写 (Spell.csx)

#r ".\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll"

#load "Mashape.csx"  // Sets a value for the string Mashape.Key

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Threading.Tasks;

using Newtonsoft.Json;

using Newtonsoft.Json.Linq;

public class Spell

{

  [JsonProperty("original")]

  public string Original { get; set; }

  [JsonProperty("suggestion")]

  public string Suggestion { get; set; }

  [JsonProperty(PropertyName ="corrections")]

  private JObject InternalCorrections { get; set; }

  public IEnumerable<string> Corrections </

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/108414
推荐阅读
相关标签
  

闽ICP备14008679号