2015-07-26 8 views
7

Wie konfiguriere ich VS 2015, um Roslyns C# -Skriptfunktionen zu aktivieren?Wie aktiviere ich C# -Skripting in VS 2015?

Ich habe versucht, verschiedene Nuget-Pakete zu installieren, einschließlich der 1.0 und 1.1.0-Beta1-Versionen von Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.Scripting.CSharp, etc., aber ich kann keine von bekommen Die Beispiele, die ich online gefunden habe, funktionieren. Ich erhalte "type not found" -Fehler, d. H.

var scriptEngine = new ScriptEngine();

... schlägt fehl, weil der Typ "ScriptEngine" nicht gefunden wird.

Kann jemand als Rezept angeben, welche Nuget-Pakete installiert werden sollen, welche Anweisungen verwendet werden müssen usw., um Roslyn-Skripte zu implementieren?

UPDATE # 1:

Ich habe einige Fortschritte gemacht, aber immer noch Fragen. Ich bekomme eine Reihe von Compiler-Warnungen und dann eine TypeInitializationException, die offensichtlich auf eine nicht übereinstimmende Komponentenversion zurückzuführen ist.

Ich bin jetzt mit dem folgenden Beispielcode (von einem Test genommen), und es gibt keine fehlenden Typen:

using System; 
using Microsoft.CodeAnalysis.Scripting.CSharp; 

namespace RoslynScriptingTest { 
    class Program { 
     static void Main(string[] args) { 
     var script = CSharpScript.Create("1 + 2"); 
     var fn = script.CreateDelegate(); 
     var value = fn(); 
     Console.WriteLine("value={0}", value.ToString()); 
     } 
    } 
} 

Ich habe alle die nächtlichen Pakete geladen, die bei https://www.myget.org/F/roslyn-nightly/ zur Verfügung stehen.

Ich erhalte eine Reihe von Build-Warnungen, die auf Microsoft.CodeAnalysis, v1.1.0.0 verweisen.

Das Ausführen der EXE trotz der Warnungen führt zu der oben erwähnten TypeInitializationException. Basierend auf dem Stacktrace wird der TypeInitializationError durch einen Versionskonflikt für System.Reflection.Metadata.dll verursacht.

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. Ich verstehe nicht, wie die Scripting-bezogenen Pakete/Komponenten zusammenpassen. Ich habe einige Beiträge von Anfang dieses Jahres gesehen, in denen beschrieben wird, wie Roslyn vollständig gebaut wurde. Ich habe das nicht getan. Ist das notwendig?

Das erinnert mich an DLL-Hölle aus den alten Tagen.

Antwort

5

Die Skript-APIs sind noch in Bearbeitung und wurden aus den Release-Paketen entfernt.

Probieren Sie stattdessen die Nightlies.

+0

Versuchte Night früher aber veraltet Beispiele hatte. Besseres Beispiel kompiliert, aber mit mehreren Warnungen: "Instanz des Analysators Microsoft.CodeAnalysis.Analyzers.InternalImplementationOnlyAnalyzer kann nicht erstellt werden von ... \ RoslynScriptingTest \ packages \ Microsoft.CodeAnalysis.Analyzers.1.1.0-beta1-20150725-01 \ analysers \ dotnet \ cs \ Microsoft.CodeAnalysis.Analyzers.dll: Die Datei oder Assembly 'Microsoft.CodeAnalysis, Version = 1.1.0.0, ...' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann die angegebene Datei nicht finden. " EXE löst eine TypeInitializationException in CSharpScript.Create() aus. –

+0

Aktualisieren Sie dieses Paket auch nachts. – SLaks

+0

Nicht sicher, welches Paket zu installieren oder wo es zu bekommen ist. Ich habe alles auf der Roslyn-Nightly-Site ausprobiert. Siehe Update Nr. 1 oben. Vielen Dank. –

2

Mit Visual Studio 2015 Update1 ist die REPL zurück und Scripting APIs sind aktiviert. Hier

ist, was Microsoft sagt über sie:

In dieser Version der C# Interactive Window ist zurück in Visual Studio sowie der Befehlszeile C# REPL Fenster. (Das interaktive Fenster ist das REPL-Fenster in Visual Studio.)

Wir haben auch Skript-APIs veröffentlicht, mit denen Sie C# als Skript erstellen und ausführen können. Die Skript-APIs sind auf GitHub verfügbar.

Darüber hinaus haben wir csi.exe veröffentlicht, ein Tool, mit dem Sie eine C# -Skriptdatei (.csx) über die Eingabeaufforderung des Entwicklers ausführen können. Geben Sie beispielsweise einfach csi myScript.csx ein, um Ihre Skriptdatei auszuführen. Oder Sie können den Befehlszeilen-REPL-Modus eingeben, um Code-Snippets interaktiv auszuwerten.Um in diesen Modus zu gelangen, führen Sie den Befehl csi ohne Argumente über die Eingabeaufforderung des Entwicklers aus.

Referenz: https://www.visualstudio.com/news/vs2015-update1-vs#Csharp

+0

Während der Link in dieser Situation sicherlich hilfreich sein könnte, gibt es dort einige [gotchas] (http://meta.stackexchange.com/a/8259) und auch [this] (http://meta.stackexchange.com/a/7659) antworten Sie, welcher Status * Link zu __more__ Information * - anstatt nur die Informationen zu verknüpfen :). – SidOfc