繁体   English   中英

C#中的Windows shell脚本

[英]Windows shell scripts in C#

我很确定几个月前我读到有关启动Windows脚本的可能性,不仅是通常的.bat ,还有.js.vbs.cs

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

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

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

选项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");
        }
    }
}

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

选项B.

或者,看一下scriptcs

http://scriptcs.net/

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

 //MyScript.Main()

 public class MyScript{
     public static void Main(){
          Console.WriteLine("hello world.");
     }
 }

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

C:\\> scriptcs myscript.cs

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

C:\\> scriptcs -install NLog

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

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

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

另一个为yoyu提供大量功能和可用命令的解决方案是PowerShell
http://technet.microsoft.com/en-us/scriptcenter/dd742419

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM