6

我很确定几个月前我读到了不仅可以启动 Windows 脚本的可能性.bat,而且还可以启动 Windows 脚本.js.vbs而且.cs

今天早上我愿意在 C#.cs文件中尝试 windows 脚本,但我碰巧在网上找不到任何参考资料。所有 CS/C# 脚本的东西似乎都是第 3 方。

您是否有任何有关 C# for Windows、纯微软风格的命令行脚本的知识参考/链接?

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

4

3 回答 3

7

选项 A

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

您可以使用注释指令来使用第三方库并包含其他 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) 与下面相比更快的脚本启动时间和2)使用namespaces没有问题。你在这里写的 C# 是真正的 C#。VS IDE 可以正常工作。scriptcs

选项 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 安装 3rd 方包,如NLog

C:\> scriptcs -install NLog

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

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

于 2013-05-01T15:18:12.830 回答
3

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

于 2011-06-27T09:39:24.833 回答
3

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

于 2011-06-27T09:24:59.863 回答