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?)
Kolonel Panic
sumber
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

kemalasan
sumber
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

Botz3000
sumber
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.

Luke Hammer
sumber
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
15

Perlu dicatat bahwa fitur ini belum didukung di VS 2019 untuk proyek .Net Core.

Anda tidak akan menemukan opsi, dan ini merupakan masalah yang diketahui seperti yang disorot dalam jawaban ini ' "Inisialisasi interaktif dengan Project" tidak ada untuk .Net Core Projects di Visual Studio 2019 '

Solusinya adalah dengan menggunakan perintah #r (#r "Path / MyDll.dll") untuk memuat perakitan secara manual seperti yang terlihat pada jawaban di atas.

Mahmoud Hanafy
sumber
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;
beloblotskiy
sumber