Bisakah jendela interaktif C # berinteraksi dengan kode saya?


161

Di Visual Studio 2015 atau lebih baru, saya bisa membuka 'jendela interaktif C #', dan menjalankan kode:

> 5 + 3
8

Imut. Sekarang bagaimana saya bisa berinteraksi kode saya - kelas saya? Asumsikan saya memiliki proyek terbuka.

> 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 bukan jendela interaktif. Itu .NET compiler API. Apakah Anda yakin tidak melewatkan hal-hal itu?
Tigran

3
Ini adalah salah satu fitur yang dikirimkan dengan Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/…
Kolonel Panic

Saya selalu menggunakan jendela Immediate standar untuk ini - berfungsi dengan tipe Anda sendiri juga.
Polyfun

2
Apakah 'jendela standar langsung'?
Kolonel Panic

@MattHickford Lihat jawaban saya yang diperbarui untuk informasi lebih lanjut
sloth

Jawaban:


221

Saat menggunakan Visual Studio 2015:

Anda dapat membuka jendela Interaktif dengan menavigasi ke Tampilan> Windows Lainnya> C # Interaktif ,

Kemudian klik kanan proyek Anda dan jalankan Initialize Interactive with Project dari menu konteks.


Untuk versi yang lebih lama:

Untuk menggunakan C # Interactive Window dengan kode Anda, pastikan Anda mengkompilasi kode Anda terlebih dahulu, kemudian menambahkan referensi ke rakitan yang dihasilkan dengan #rperintah seperti:

Command prompt C #


Anda juga dapat menggunakan Jendela Langsung untuk berinteraksi dengan kode Anda juga, seperti:

Jendela Segera


1
Terima kasih. Saya lebih suka jendela interaktif C #. Jendela langsungnya tidak ramah, tidak ada pelengkapan otomatis. 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
Kolonel Panic

-1 pertanyaannya adalah tentang menggunakan C # REPL (jendela interaktif) baru yang merupakan bagian dari roslyn. Lihat video c9 Don Syme di mana ia menggunakan F # Interactive Window saat ia mengembangkan. Barang bagus. channel9.msdn.com/Series/…
John Dhom

25
@JohnDhom Mengapa downvote? Jawaban saya benar-benar menunjukkan cara berinteraksi dengan kode Anda sendiri melalui jendela interaktif C # (bahkan ada tangkapan layar yang menunjukkan itu).
kemalasan

8
Dalam proyek .Net Core, item menu konteks tidak muncul, sehingga metode #r diperlukan. Jawaban ini sangat cocok untuk itu.
Ryan

2
Saya ingin menambahkan satu petunjuk lagi yang berguna: jika Anda ingin menggunakan beberapa hal run-time, Anda dapat dengan mudah menambahkan arahan ini:#r "System.Runtime"
mostafa8026

70

Anda dapat menggunakan kelas dari proyek Anda sendiri.
Cukup klik kanan pada solusi Anda dan pilih "Reset Interaktif dari Proyek".

Jika Anda memerlukan informasi lebih lanjut, inilah sumbernya:
Menggunakan C # Interactive Window yang menyertai Roslyn - Bagian 2


1
Terima kasih, itu kedengarannya benar. Sayangnya, itu tidak berfungsi seperti yang dijelaskan — proyek apa pun yang saya coba itu, akan muncul peringatan kesalahan yang mengatakan 'nama perakitan tidak valid'. Dengan frustrasi, itu tidak menjelaskan pertemuan apa yang dibicarakan. Saya kira perangkat lunaknya rusak.
Kolonel Panic

@MattHickford: Apa jenis proyeknya? Kami belum melakukan banyak pengujian di luar Aplikasi Konsol dan Perpustakaan Class yang sederhana.
Kevin Pilch

Terima kasih telah bertanya pada Kevin. Saya baru saja mencoba 'reset interaktif dari proyek' pada beberapa proyek yang lebih kecil, itu berhasil. Proyek yang tidak berfungsi dengan andal adalah pustaka dan aplikasi yang lebih rumit dengan banyak referensi.
Kolonel Panic

25
Tak satu pun dari ini berlaku untuk VS 2015 lagi. Perintah menu konteks hilang dan #rtidak menemukan majelis proyek saya. Ada ide?
ygoe

18
Di VS 2015 Pembaruan 3, ada 'Inisialisasi Interaktif dengan Proyek' ketika mengklik kanan suatu proyek dalam solusi (di Solution Explorer).
Andrei Pana

44

Hanya pembaruan dari jawaban @ Botz3000.

Perintah yang ingin Anda temukan sekarang disebut "Inisialisasi Interaktif dengan Proyek"

masukkan deskripsi gambar di sini

Juga perlu dicatat saya tidak dapat menemukan perintah ini jika jendela C # interactive saya tidak dapat dilihat.


11
Bukan itu. Saya mendapatkannya di tempat yang persis sama dengan screenshot menunjukkan.
Tom

3
@ Tom tampaknya berfungsi atau tidak berfungsi berdasarkan jenis proyek yang Anda kerjakan. apa jenis proyek yang Anda kerjakan ketika Anda menemukannya?
Luke Hammer

@WizardHammer Saya percaya Perpustakaan Kelas
Tom

10
Saya mencoba untuk mendapatkan ini untuk bekerja dengan perpustakaan NetStandard dan opsi tidak ada di menu konteks
ChadT


11

Sepenuhnya setuju "Inisialisasi Interaktif dengan Proyek" itu keren.

Pendekatan saya adalah mendorong kelas ke pustaka dan menggunakan // css_reference dalam skrip C # atau #r di jendela C # Interactive

Sebagai contoh:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.