führen Sie Einzel -*.cs-Skript von der Kommandozeile aus

Gibt es endlich eine einfache Möglichkeit zum ausführen von c# – Skript-Datei von der Kommandozeile aus?

Sah ich, dass Diskussion auf github

und nach diesem thread ich denke dotnet run Test.cs sollte den job tun.

Aber für meine Testklasse ist:

using System;
namespace Scripts
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.Out.WriteLine("This is the miracle");
        }
    }
}

scheitert es

PM> dotnet run .\Test.cs 
dotnet.exe : Object reference not set to an instance of an object.At line:1 char:1

Also wie könnte ich Sie führen Sie den code in eine einzige Datei mit dem Befehl Linie in der relativ einfachen Art und Weise?


UPD 1: Wie richtig erwähnt von @Lee und @svick dotnet run ist für das laufende Projekt. Aber meine ursprüngliche Frage war – wie ausgeführt eine einzige Datei. Vielleicht sind einige Optionen mit roslyn?

InformationsquelleAutor silent_coder | 2016-05-30



4 Replies
  1. 2

    Ich eine andere Lösung gefunden, die auf Scott Hanselman ‚ s blog:

    https://www.hanselman.com/blog/CAndNETCoreScriptingWithTheDotnetscriptGlobalTool.aspx

    Es stützt sich auf einen .NET-CLI-tool namens dotnet-script finden Sie Ihr repository unter:

    https://github.com/filipw/dotnet-script

    Verwenden, müssen Sie zunächst installieren Sie es mit dotnet tool install -g dotnet-script

    Dann können Sie dotnet script und verwenden Sie es als eine REPL oder laufen dotnet script file.csx zum ausführen einer Datei.

    Um ein NuGet-Paket-reference, verwenden Sie #r "nuget: AutoMapper, 6.1.0".

  2. 1

    Ziemlich sicher, dass Sie müssen ein Projekt.json-Datei. Hier ist ein bare-bones-Datei, um es auszuführen:

    {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0-*",
          "type": "platform"
        }
      },
    
      "frameworks": {
        "netcoreapp1.0": {
          "imports": {}
        }
      },
    
      "buildOptions": {
        "emitEntryPoint": true
      }
    }

    Hinweis: die emitEntryPoint.

    Musste ich dotnet restore ersten und dann dotnet run test.cs.

    • also diese Option ist nur für Projekte und nicht zulassen, führen einzelne scripts, richtig?
    • Ich denke, so yeah, aber wenn jemand bestätigen könnte, das wäre gut. Ich merke, wenn Sie eine „neue dotnet“ es werden zwei Dateien erstellt. Ein „Hello World“ – Programm.cs und ein einfaches Projekt.json-Datei.
  3. 1

    Es kann getan werden, mithilfe der Powershell.
    Angenommen, Ihr code wird in einer Datei test.cs im aktuellen Ordner:

    $source = (Get-Content .\test.cs) -join " "
    Add-Type $source -Language CSharp  
    [Scripts.Program]::Main((""))

    gibt

    PS> .\test.ps1
    This is the miracle

    Also wie könnte ich Sie führen Sie den code in eine einzige Datei mit dem Befehl line-in
    relativ einfache Art und Weise?

    Wickeln Sie den obigen code in eine Funktion, um den Namen der Datei ein parameter, setzen Sie die Funktion in Ihre Powershell-Profil, und führen Sie es, Wann immer Sie wollen. Aber seien Sie sich der Tatsache bewusst, dass Sie, sobald Sie andere Baugruppen Sie muss angegeben werden, wenn dabei der Ruf. Hier ist ein etwas größeres elaborat Beispiel.

  4. 0

    Für diese habe ich immer das c# – scripting-engine : http://csscript.net,

    sehr einfach zu implementieren und funktioniert sehr gut, und Sie können verweisen auf lokale dlls, Nuget-Pakete oder GAC assemblies.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.