C#中的Windows shell脚本

Ste*_*and 6 .net c# windows-scripting

我敢肯定,几个月前,我读到推出Windows脚本不仅平常的可能性.bat,而且.js,.vbs.cs!

我愿意.cs今天早上在C#文件中尝试使用Windows脚本,但我无法在网上找到任何引用.所有CS/C#脚本的东西似乎都是第三方.

你有任何关于C#for Windows命令行脚本的知识参考/链接,纯微软风格?

是的,这意味着动态C#编译......所以也许我认为这是可能的.就告诉我嘛.

Bri*_*vez 7

选项A.

如果您正在寻找真正的C#开发体验,请尝试使用CS-Script.

您可以使用comment指令来使用第三方库并包含其他C#脚本.

//css_nuget dotnetzip
using Ionic.Zip;
using System;

class Script
{
    static public void Main()
    {
        using(ZipFile zip = new ZipFile())
        {
            zip.AddFile("app.exe");
            zip.AddFile("readme.exe");
            zip.Save("app.zip");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我更喜欢,CS-Script因为我注意到1) 与下面相比,脚本启动时间更快,2)使用命名空间没有问题.你在这里写的C#是真正的C#.VS IDE正常工作.scriptcs

选项B.

或者,看一下scriptcs

http://scriptcs.net/

您还可以使用VS编写一些简单的脚本:

 //MyScript.Main()

 public class MyScript{
     public static void Main(){
          Console.WriteLine("hello world.");
     }
 }
Run Code Online (Sandbox Code Playgroud)

当您准备好运行脚本时scriptcs,请删除//注释.

C:\> scriptcs myscript.cs

此外,您可以使用nuget安装第三方软件包 NLog

C:\> scriptcs -install NLog

我发现的一个问题scriptcs是无法使用命名空间.scriptcs引擎盖下使用Roslyn编译器编译C#脚本.不幸的是,Roslyn在编译脚本时有一个漏洞的设计实现.特别是,为了让Roslyn处理REPL类型的用例,每个脚本编译都使用嵌套类来存储变量和状态.由于您无法在嵌套的class使用命名空间中使用命名空间,因此scriptcs将失败.因此,如果您尝试导入*.cs包含名称空间的松散文件(如VS项目中的域对象),则需要删除名称空间.

这个糟糕的设计决定给我留下了不好的印象,所以我主要使用cs-script 选项A,直到Roslyn团队支持命名空间.


Var*_*ant 3

您可以通过 WSH(Windows 脚本主机)运行脚本:
http://msdn.microsoft.com/en-us/library/9bbdkx3k (v=vs.85).aspx