Czy okno interaktywne C # może współdziałać z moim kodem?


161

W programie Visual Studio 2015 lub nowszym mogę otworzyć interaktywne okno C # i uruchomić kod:

> 5 + 3
8

To słodkie. Jak mogę teraz korzystać z mojego kodu - moich zajęć? Załóżmy, że mam otwarty 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?)

Roslyn nie jest oknem interaktywnym. Jest to API kompilatora .NET. Czy na pewno nie przegapisz rzeczy?
Tigran,

3
To jest jedna funkcja dostarczana z Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/ ...
Colonel Panic

Zawsze używam do tego standardowego okna natychmiastowego - działa również z Twoimi własnymi typami.
Polyfun

2
Co to jest „standardowe okno natychmiastowe”?
Panika pułkownika,

@MattHickford Zobacz moją zaktualizowaną odpowiedź, aby uzyskać więcej informacji
lenistwo

Odpowiedzi:


221

W przypadku korzystania z programu Visual Studio 2015:

Możesz otworzyć okno interaktywne, przechodząc do widoków> inne okna> C # interaktywne ,

Następnie kliknij prawym przyciskiem myszy swój projekt i uruchom Initialize Interactive with Project z menu kontekstowego.


W przypadku starszych wersji:

Aby użyć interaktywnego okna C # z kodem, upewnij się, że najpierw skompilujesz kod, a następnie dodaj odwołanie do wynikowego zestawu za pomocą następującego #rpolecenia:

Wiersz polecenia C #


Możesz również użyć okna bezpośredniego do interakcji z kodem, na przykład:

Bezpośrednie okno


1
Dzięki. Bardziej podoba mi się okno interaktywne C #. Bezpośrednie okno jest nieprzyjazne, nie ma autouzupełniania. 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
Panika pułkownika

-1 pytanie dotyczy używania nowego C # REPL (okno interaktywne), które jest częścią Roslyn. Spójrz na filmy c9 Don Syme'a, w których używa on interaktywnego okna F # w miarę rozwoju. Dobry towar. channel9.msdn.com/Series/…
John

25
@JohnDhom Why the downvote? Moje odpowiedzi całkowicie pokazują, jak współdziałać z własnym kodem za pośrednictwem interaktywnego okna C # (jest nawet pokazujący to zrzut ekranu).
lenistwo

8
W projektach .Net Core pozycja menu kontekstowego nie pojawia się, więc wymagana jest metoda #r. Ta odpowiedź jest do tego idealna.
Ryan

2
Chcę dodać jeszcze jedną przydatną wskazówkę: jeśli chcesz użyć pewnych rzeczy w czasie wykonywania, możesz łatwo dodać tę dyrektywę:#r "System.Runtime"
mostafa8026

70

Możesz użyć klas z własnego projektu.
Kliknij prawym przyciskiem myszy rozwiązanie i wybierz opcję „Resetuj elementy interaktywne z projektu”.

Jeśli potrzebujesz więcej informacji, oto źródło:
Używanie interaktywnego okna C #, które jest dostarczane z Roslyn - część 2


1
Dzięki, to brzmi dobrze. Niestety, nie działa to zgodnie z opisem - niezależnie od projektu, w którym go wypróbuję, wyskakuje alert o błędzie mówiący „nieprawidłowa nazwa zespołu”. Frustrujące jest to, że nie wyjaśnia, o czym mówi montaż. Myślę, że oprogramowanie jest zepsute.
Panika pułkownika,

@MattHickford: Jakiego rodzaju jest projekt? Nie wykonaliśmy zbyt wielu testów poza prostymi aplikacjami ConsoleApplications i bibliotekami klas.
Kevin Pilch

Dzięki, że zapytałeś Kevina. Właśnie próbowałem `` zresetować interaktywność z projektu '' w niektórych mniejszych projektach, działało dobrze. Projekty, w których nie działa niezawodnie, to bardziej skomplikowane biblioteki i aplikacje z wieloma odniesieniami.
Panika pułkownika

25
Nic z tego nie dotyczy już VS 2015. Polecenie menu kontekstowego zniknęło i #rnie znajduje moich zestawów projektu. Jakieś pomysły?
ygoe

18
W VS 2015 Update 3 po kliknięciu projektu prawym przyciskiem myszy w rozwiązaniu (w Eksploratorze rozwiązań) znajduje się opcja „Zainicjuj interaktywne z projektem”.
Andrei Pana

44

Tylko aktualizacja z odpowiedzi @ Botz3000.

Polecenie, które chcesz znaleźć, nazywa się teraz „Zainicjuj interaktywne z projektem”

wprowadź opis obrazu tutaj

Warto również zauważyć, że nie mogłem znaleźć tego polecenia, jeśli moje interaktywne okno C # nie było widoczne.


11
Nie, nie jest. Mam to dokładnie w tym samym miejscu, na które wskazuje zrzut ekranu.
Tom

3
@Tom wydaje się działać lub nie w zależności od typu projektu, nad którym pracujesz. z jakim typem projektu pracowałeś, kiedy go znalazłeś?
Luke Hammer

@WizardHammer Wierzę, że biblioteka klasowa
Tom

10
Próbuję zmusić to do pracy z biblioteką NetStandard, a opcji nie ma w menu kontekstowym
ChadT


11

Całkowicie zgadzam się, że „Zainicjuj interaktywne z projektem” jest fajne.

Moje podejście polega na wypchnięciu klas do biblioteki i użyciu // css_reference w skrypcie C # lub #r w C # oknie interaktywnym

Na przykład:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.