2015-07-26 20 views
7

Come configurare VS 2015 per abilitare le funzionalità di script C# di Roslyn?Come abilitare lo script C# in VS 2015?

Ho provato a installare vari pacchetti Nuget, incluse le versioni 1.0 e 1.1.0-beta1 di Microsoft.CodeAnalysis.CSharp, Microsoft.CodeAnalysis.Scripting.CSharp, ecc., Ma non riesco a ottenerne nessuna gli esempi che ho trovato online per funzionare. Ricevo errori di tipo non trovato, ad esempio

var scriptEngine = new ScriptEngine();

... non riesce perché il tipo "ScriptEngine" non è stato trovato.

Qualcuno può fornire come ricetta che include quali pacchetti di nuget installare, quali istruzioni sono richieste, ecc., Per implementare lo script di Roslyn?

UPDATE # 1:

ho fatto qualche progresso, ma ancora problemi. Ricevo un sacco di avvertenze sul compilatore e poi una TypeInitilizationException apparentemente dovuta a una mancata corrispondenza della versione del componente.

Ora sto utilizzando il seguente codice di esempio (tratto da un test), e non c'è nessun tipo mancanti:

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

Ho caricato tutti i pacchetti notturne che sono disponibili a https://www.myget.org/F/roslyn-nightly/.

Ricevo una serie di avvisi di build che fanno riferimento a Microsoft.CodeAnalysis, v1.1.0.0.

L'esecuzione dell'exe nonostante gli avvisi restituisce la TypeInitilizationException menzionata sopra. In base allo stacktrace, TypeInitializationError è causato da una mancata corrispondenza della versione per System.Reflection.Metadata.dll.

Non so da dove andare. Non capisco come i pacchetti/componenti relativi allo scripting combacino. Ho visto alcuni post di quest'anno che descrivono la costruzione completa di Roslyn. Non l'ho fatto. È necessario?

Questo mi ricorda l'inferno DLL dei vecchi tempi.

risposta

5

Le API di scripting sono ancora in corso e sono state rimosse dai pacchetti di rilascio.

Provate invece le serate.

+0

nightlies Provato prima, ma aveva di esempi di data. Migliore esempio di compilazione ma con diversi avvisi: "istanza dell'analizzatore Microsoft.CodeAnalysis.Analyzers.InternalImplementationOnlyAnalyzer non può essere creata da ... \ RoslynScriptingTest \ packages \ Microsoft.CodeAnalysis.Analyzers.1.1.0-beta1-20150725-01 \ analysers \ dotnet \ cs \ Microsoft.CodeAnalysis.Analyzers.dll: impossibile caricare il file o l'assembly 'Microsoft.CodeAnalysis, Version = 1.1.0.0, ...' o una delle sue dipendenze.Il sistema non riesce a trovare il file specificato. " EXE lancia una TypeInitializationException in CSharpScript.Create(). –

+0

Aggiorna il pacchetto anche a notte. – SLaks

+0

Non sai quale pacchetto installare, o dove trovarlo. Ho provato tutto sul sito di Roslyn-nightly. Vedere l'aggiornamento n. 1 sopra. Grazie. –

2

Con Visual Studio 2015 update1 il REPL è tornato e le API di scripting sono abilitate.

Ecco cosa dice a questo proposito Microsoft:

In questa versione, la finestra di C# Interactive è di nuovo in Visual Studio, così come la finestra di C# REPL riga di comando. (La finestra interattiva è la finestra REPL in Visual Studio.)

Abbiamo anche rilasciato API di scripting che consentono di creare ed eseguire C# come script. Le API di scripting sono disponibili su GitHub.

Inoltre, è stato rilasciato csi.exe, uno strumento che è possibile utilizzare per eseguire un file di script C# (.csx) dal Prompt dei comandi dello sviluppatore. Ad esempio, è sufficiente digitare csi myScript.csx per eseguire il file di script. In alternativa, è possibile accedere alla modalità REPL della riga di comando per valutare interattivamente i frammenti di codice C#.Per accedere a questa modalità, eseguire il comando csi senza argomenti dal Prompt dei comandi dello sviluppatore.

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

+0

Anche se il collegamento potrebbe essere di aiuto in questa situazione, ci sono alcuni [trucchi] (http://meta.stackexchange.com/a/8259) lì e anche [questo] (http://meta.stackexchange.com/a/7659) risposta che afferma * collegamento a __more__ informazioni * - piuttosto che solo il collegamento delle informazioni :). – SidOfc

Problemi correlati