Kann das interaktive C # -Fenster mit meinem Code interagieren?

159

In Visual Studio 2015 oder höher kann ich das interaktive C # -Fenster öffnen und Code ausführen:

> 5 + 3
8

Das ist süß. Wie kann ich nun meinen Code interagieren - meine Klassen? Angenommen, ich habe ein offenes Projekt.

> 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?)
Oberst Panik
quelle
Roslyn ist kein interaktives Fenster. Es ist die .NET-Compiler-API. Verpassen Sie die Dinge nicht?
Tigran
3
Dies ist eine Funktion, die mit Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/… ausgeliefert wird
Colonel Panic
Ich benutze dafür immer das Standard-Sofortfenster - funktioniert auch mit Ihren eigenen Typen.
Polyfun
2
Was ist das "Standard-Sofortfenster"?
Colonel Panic
@ MattHickford Siehe meine aktualisierte Antwort für weitere Informationen
Faultier

Antworten:

220

Bei Verwendung von Visual Studio 2015:

Sie können das interaktive Fenster öffnen , indem Sie auf die Navigation Ansichten> Andere Fenster> C # Interactive ,

Klicken Sie dann einfach mit der rechten Maustaste auf Ihr Projekt und führen Sie im Kontextmenü die Option Interaktiv mit Projekt initialisieren aus.


Für ältere Versionen:

Um das interaktive C # -Fenster mit Ihrem Code zu verwenden, stellen Sie sicher, dass Sie zuerst Ihren Code kompilieren und dann mit dem folgenden #rBefehl einen Verweis auf die resultierende Assembly hinzufügen :

C # Eingabeaufforderung


Sie können auch das Sofortfenster verwenden, um mit Ihrem Code zu interagieren, wie folgt:

Sofortiges Fenster

Faultier
quelle
1
Vielen Dank. Das interaktive C # -Fenster gefällt mir besser. Das unmittelbare Fenster ist unfreundlich, es gibt keine automatische Vervollständigung. 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
Colonel Panic
-1 Die Frage betrifft die Verwendung des neuen C # REPL (interaktives Fenster), das Teil von Roslyn ist. Schauen Sie sich die c9-Videos von Don Syme an, in denen er während seiner Entwicklung das interaktive F # -Fenster verwendet. Gutes Zeug. channel9.msdn.com/Series/…
John Dhom
25
@ JohnDhom Warum die Abstimmung? Meine Antworten zeigen vollständig, wie Sie über das interaktive C # -Fenster mit Ihrem eigenen Code interagieren können (es gibt sogar einen Screenshot, der dies zeigt).
Faultier
8
In .Net Core-Projekten wird das Kontextmenüelement nicht angezeigt, daher ist die Methode #r erforderlich. Diese Antwort ist perfekt dafür.
Ryan
2
Ich möchte noch einen nützlichen Hinweis hinzufügen: Wenn Sie einige Laufzeitsachen verwenden möchten, können Sie diese Anweisung einfach hinzufügen:#r "System.Runtime"
mostafa8026
70

Sie können Klassen aus Ihrem eigenen Projekt verwenden.
Klicken Sie einfach mit der rechten Maustaste auf Ihre Lösung und wählen Sie "Interaktiv aus Projekt zurücksetzen".

Wenn Sie weitere Informationen benötigen, finden Sie hier die Quelle:
Verwenden des mit Roslyn gelieferten interaktiven C # -Fensters - Teil 2

Botz3000
quelle
1
Danke, das klingt richtig. Leider funktioniert es nicht wie beschrieben - unabhängig davon, in welchem ​​Projekt ich das anprobiere, wird eine Fehlermeldung mit der Meldung "Ungültiger Assemblyname" angezeigt. Frustrierend erklärt es nicht, um welche Versammlung es sich handelt. Ich denke die Software ist kaputt.
Colonel Panic
@ MattHickford: Was für ein Projekt ist das Projekt? Über einfache ConsoleApplications und ClassLibraries hinaus haben wir nicht viel getestet.
Kevin Pilch
Danke, dass du Kevin gefragt hast. Ich habe gerade versucht, bei einigen kleineren Projekten "Interaktiv aus Projekt zurücksetzen" zurückzusetzen. Es hat richtig funktioniert. Die Projekte, für die es nicht zuverlässig funktioniert, sind kompliziertere Bibliotheken und Anwendungen mit vielen Referenzen.
Colonel Panic
25
Nichts davon gilt mehr für VS 2015. Der Kontextmenübefehl ist #rnicht mehr vorhanden und findet meine Projektassemblys nicht. Irgendwelche Ideen?
Ygoe
18
In VS 2015 Update 3 gibt es eine Option "Interaktiv mit Projekt initialisieren", wenn Sie mit der rechten Maustaste auf ein Projekt in der Lösung klicken (im Projektmappen-Explorer).
Andrei Pana
44

Nur ein Update von der @ Botz3000 Antwort.

Der Befehl, den Sie suchen möchten, heißt jetzt "Interaktiv mit Projekt initialisieren".

Geben Sie hier die Bildbeschreibung ein

Es ist auch erwähnenswert, dass ich diesen Befehl nicht finden konnte, wenn mein interaktives C # -Fenster nicht sichtbar war.

Luke Hammer
quelle
11
Nein, ist es nicht. Ich habe es genau an der gleichen Stelle, auf die der Screenshot zeigt.
Tom
3
@ Tom scheint zu funktionieren oder nicht zu funktionieren, je nachdem, mit welcher Art von Projekt Sie arbeiten. Mit welchem ​​Projekttyp haben Sie gearbeitet, als Sie ihn gefunden haben?
Luke Hammer
@WizardHammer Ich glaube Class Library
Tom
10
Ich versuche, dies mit einer NetStandard-Bibliothek zum Laufen zu bringen, und die Option ist im Kontextmenü nicht vorhanden
ChadT
15

Es ist erwähnenswert, dass die Funktion in VS 2019 für das .Net Core-Projekt noch nicht unterstützt wird.

Sie haben die Option nicht finden, und es ist ein bekanntes Problem , wie in dieser Antwort hervorgehoben ‚ ‚initialisieren interaktiv mit dem Projekt‘fehlt für .Net Core - Projekte in Visual Studio 2019

Die Problemumgehung besteht darin, den Befehl #r (#r "Path / MyDll.dll") zu verwenden, um die Assembly manuell zu laden, wie in der obigen Antwort dargestellt.

Mahmoud Hanafy
quelle
10

Stimme voll und ganz zu, "Interaktiv mit Projekt initialisieren" ist cool.

Mein Ansatz besteht darin, Klassen in eine Bibliothek zu verschieben und // css_reference im C # -Skript oder #r im interaktiven C # -Fenster zu verwenden

Beispielsweise:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
beloblotskiy
quelle