2015-07-26 42 views
7

Jak skonfigurować VS 2015, aby włączyć obsługę skryptów Roslyn w języku C#?Jak włączyć obsługę skryptów C# w VS 2015?

Próbowałem zainstalować różne pakiety Nuget, w tym wersje 1.0 i 1.1.0-beta1 Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.Scripting.CSharp, itp., Ale nie mogę uzyskać żadnego z przykłady, które udało mi się znaleźć online. Otrzymuję błędy typu "nie znaleziono typu", tj.

var scriptEngine = new ScriptEngine();

... nie działa, ponieważ nie znaleziono typu "ScriptEngine".

Czy ktoś może podać jako przepis, który zawiera pakiety nuget do zainstalowania, które instrukcje są wymagane, itp., Aby zaimplementować skrypt Roslona?

Aktualizacja # 1:

Mam pewien postęp, ale nadal występują problemy. Dostaję garść ostrzeżeń kompilatora, a następnie wyjątek TypeInitilizationException, który najwyraźniej wynika z niedopasowania wersji składników.

Obecnie używam następujący przykładowy kod (wzięte z testu), a tam nie ma brakujących typów:

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()); 
     } 
    } 
} 

mam załadowany wszystkich nocnych pakietów, które są dostępne w https://www.myget.org/F/roslyn-nightly/.

Otrzymuję serię ostrzeżeń dotyczących kompilacji, które odnoszą się do Microsoft.CodeAnalysis, v1.1.0.0.

Uruchamianie instrukcji exe pomimo ostrzeżeń powoduje wyżej wymienione wyjątki TypeInitilizationException. Na podstawie śledzenia stosu błąd TypeInitializationError spowodowany jest niedopasowaniem wersji dla pliku System.Reflection.Metadata.dll.

Nie jestem pewien, dokąd się udać. Nie rozumiem, w jaki sposób pakiety/komponenty związane ze skryptami pasują do siebie. Widziałem kilka postów z tego roku, które opisują kompletnie budowę Roslyn. Nie zrobiłem tego. Czy to konieczne?

To przypomina mi piekło DLL od dawnych czasów.

Odpowiedz

5

Interfejsy API skryptów są nadal w toku i zostały usunięte z pakietów wersji.

Wypróbuj zamiast tego nocne.

+0

Wypróbowane nightly wcześniej, ale miałem z przykładów dat. Lepszy przykład kompiluje, ale z kilkoma ostrzeżeniami: "instancji analizatora Microsoft.CodeAnalysis.Analyzers.InternalImplementationOnlyAnalyzer nie można utworzyć z ... \ RoslynScriptingTest \ packages \ Microsoft.CodeAnalysis.Analyzers.1.1.0-beta1-20150725-01 \ analyzers \ dotnet \ cs \ Microsoft.CodeAnalysis.Analyzers.dll: Nie można załadować pliku lub zestawu "Microsoft.CodeAnalysis, Version = 1.1.0.0, ..." lub jednej z jego zależności.Nie system nie może znaleźć określonego pliku. " EXE wyrzuca wyjątek TypeInitializationException w CSharpScript.Create(). –

+0

Uaktualnij także ten pakiet do codziennych. – SLaks

+0

Nie jesteś pewien, którą paczkę zainstalować i skąd ją wziąć. Próbowałem wszystkiego na stronie Roslyn-nightly. Zobacz Aktualizacja nr 1 powyżej. Dzięki. –

2

Wraz z aktualizacją wizualnego studio 20151 REPL powraca i api-skrypty są włączone.

Oto co Microsoft mówi o tym:

W tej wersji C# Interactive Okno jest z powrotem w Visual Studio, a także w oknie wiersza polecenia C# REPL. (Okno Interaktywne jest oknem REPL wewnątrz programu Visual Studio.)

Udostępniamy także interfejsy API do skryptów, które umożliwiają budowanie i uruchamianie skryptu w języku C#. Skrypty API są dostępne na GitHub.

Dodatkowo udostępniliśmy narzędzie csi.exe, które służy do uruchamiania pliku skryptu C# (.csx) z poziomu wiersza polecenia programisty. Na przykład po prostu wpisz csi myScript.csx, aby uruchomić plik skryptu. Możesz też wejść w tryb REPL wiersza poleceń, aby interaktywnie oceniać fragmenty kodu C#.Aby przejść do tego trybu, uruchom komendę csi bez żadnych argumentów z poziomu Developer Command Prompt.

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

+0

Podczas gdy link z pewnością byłby pomocny w tej sytuacji, istnieją pewne [gotchas] (http://meta.stackexchange.com/a/8259) tam, a także [to] (http://meta.stackexchange.com/a/7659) odpowiedź, która stwierdza * link do __more__ informacji * - a nie tylko łączenie informacji :). – SidOfc