La finestra interattiva C # può interagire con il mio codice?


161

In Visual Studio 2015 o versioni successive, posso aprire la "finestra interattiva C #" ed eseguire il codice:

> 5 + 3
8

Che carino. Ora come posso interagire con il mio codice, le mie lezioni? Supponiamo che abbia un progetto aperto.

> new Cog()
(1,5): error CS0246: The type or namespace name 'Cog' could not be found (are you missing a using directive or an assembly reference?)

Roslyn non è una finestra interattiva. È l'API del compilatore .NET. Sei sicuro di non perdere le cose?
Tigran,

3
Questa è una funzionalità fornita con Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/…
Colonnello Panic,

Per questo uso sempre la finestra Immediata standard - funziona anche con i tuoi tipi.
Polyfun,

2
Che cos'è la "finestra immediata standard?"
Colonnello Panic,

@MattHickford Vedi la mia risposta aggiornata per ulteriori informazioni
bradipo

Risposte:


221

Quando si utilizza Visual Studio 2015:

Puoi aprire la finestra interattiva andando su Viste> Altre finestre> C # Interactive ,

Quindi fai clic con il pulsante destro del mouse sul progetto ed esegui Initialize Interactive con progetto dal menu di scelta rapida.


Per le versioni precedenti:

Per utilizzare la finestra interattiva C # con il codice, assicurarsi di compilare prima il codice, quindi aggiungere un riferimento all'assembly risultante con il #rcomando in questo modo:

Prompt dei comandi C #


Puoi anche utilizzare la Finestra immediata per interagire anche con il tuo codice, in questo modo:

Finestra immediata


1
Grazie. Mi piace di più la finestra interattiva C #. La finestra immediata è ostile, non c'è il completamento automatico. Console.WriteLine("hey") The name 'Console' does not exist in the current context System.Console.WriteLine("hey") Expression has been evaluated and has no value
Colonnello Panic,

-1 la domanda riguarda l'uso del nuovo REPL C # (finestra interattiva) che fa parte di roslyn. Guarda i video c9 di Don Syme in cui usa la finestra interattiva F # mentre si sviluppa. Roba buona. channel9.msdn.com/Series/…
John Dhom il

25
@JohnDhom Perché il downvote? Le mie risposte mostrano totalmente come interagire con il proprio codice tramite la finestra interattiva C # (c'è anche uno screenshot che lo mostra).
bradipo

8
Nei progetti .Net Core, la voce del menu di scelta rapida non viene visualizzata, quindi è richiesto il metodo #r. Questa risposta è perfetta per questo.
Ryan,

2
Voglio aggiungere un altro suggerimento utile: se si desidera utilizzare alcune cose di runtime, è possibile aggiungere facilmente questa direttiva:#r "System.Runtime"
mostafa8026

70

Puoi usare le lezioni del tuo progetto.
Basta fare clic con il tasto destro sulla soluzione e selezionare "Ripristina interattivo dal progetto".

Se hai bisogno di maggiori informazioni, ecco la fonte:
Usare la finestra interattiva C # fornita con Roslyn - Parte 2


1
Grazie, suona bene. Purtroppo, non funziona come descritto — qualunque sia il progetto su cui lo provo, viene visualizzato un avviso di errore che dice "nome assembly non valido". Frustrante, non spiega di quale assemblea stia parlando. Immagino che il software sia rotto.
Colonnello Panic,

@MattHickford: che tipo di progetto è il progetto? Non abbiamo fatto molti test oltre alle semplici ConsoleApplications e ClassLibraries.
Kevin Pilch,

Grazie per averlo chiesto a Kevin. Ho appena provato a "ripristinare interattivo dal progetto" su alcuni progetti più piccoli, ha funzionato bene. I progetti per cui non funziona in modo affidabile sono librerie e applicazioni più complicate con molti riferimenti.
Colonnello Panic,

25
Niente di tutto ciò vale più per VS 2015. Il comando del menu di scelta rapida è sparito e #rnon trova i miei assembly di progetto. Qualche idea?
giovedì

18
Nell'aggiornamento 3 di VS 2015, è presente un "Inizializza interattivo con progetto" quando si fa clic con il pulsante destro del mouse su un progetto nella soluzione (in Esplora soluzioni).
Andrei Pana,

44

Solo un aggiornamento dalla risposta @ Botz3000.

Il comando che vuoi trovare ora è chiamato "Inizializza Interattivo con Progetto"

inserisci qui la descrizione dell'immagine

Vale anche la pena notare che non potrei trovare questo comando se la mia finestra interattiva C # non fosse visualizzabile.


11
No non lo è. L'ho preso esattamente nello stesso punto indicato dallo screenshot.
Tom,

3
@ Tom sembra funzionare o meno in base al tipo di progetto con cui stai lavorando. qual era il tipo di progetto con cui stavi lavorando quando l'hai trovato?
Luke Hammer,

@WizardHammer Credo che Class Library
Tom

10
Sto cercando di farlo funzionare con una libreria NetStandard e l'opzione non è presente nel menu di
scelta


11

Assolutamente d'accordo sul fatto che "Inizializza interattivo con progetto" è interessante.

Il mio approccio è di inserire le classi in una libreria e usare // css_reference nello script C # o #r nella finestra C # Interactive

Per esempio:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.