หน้าต่างโต้ตอบ C # สามารถโต้ตอบกับรหัสของฉันได้หรือไม่


161

ใน Visual Studio 2015 หรือใหม่กว่าฉันสามารถเปิด 'หน้าต่างโต้ตอบ C #' และเรียกใช้รหัส:

> 5 + 3
8

นั้นน่ารัก. ตอนนี้ฉันจะโต้ตอบโค้ดของฉัน - ชั้นเรียนของฉันได้อย่างไร สมมติว่าฉันมีโครงการเปิดอยู่

> 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 ไม่ใช่หน้าต่างแบบโต้ตอบ มันเป็น. NET คอมไพเลอร์ API คุณแน่ใจหรือว่าไม่พลาดสิ่งต่างๆ
Tigran

3
นี่เป็นคุณสมบัติหนึ่งที่มาพร้อมกับ Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/…
Colonel Panic

ฉันมักจะใช้หน้าต่างมาตรฐานทันทีสำหรับสิ่งนี้ - ทำงานกับประเภทของคุณเองเช่นกัน
Polyfun

2
'หน้าต่างมาตรฐานแบบทันทีคืออะไร'
พันเอก Panic

@MattHickford ดูคำตอบที่อัปเดตของฉันสำหรับข้อมูลเพิ่มเติม
Sloth

คำตอบ:


221

เมื่อใช้ Visual Studio 2015:

คุณสามารถเปิดหน้าต่างแบบโต้ตอบโดยการนำไปชม> อื่น ๆ ของ Windows> C # อินเทอร์ ,

จากนั้นเพียงคลิกขวาที่โครงการของคุณและเรียกใช้Initialize Interactive กับ Projectจากเมนูบริบท


สำหรับรุ่นเก่า:

ในการใช้หน้าต่าง C # Interactive กับรหัสของคุณให้แน่ใจว่าคุณรวบรวมรหัสของคุณก่อนจากนั้นเพิ่มการอ้างอิงไปยังชุดประกอบที่เกิดขึ้นด้วย#rคำสั่งดังนี้:

พรอมต์คำสั่ง C #


นอกจากนี้คุณยังสามารถใช้หน้าต่างค้นหาทันทีเพื่อโต้ตอบกับโค้ดของคุณได้เช่น:

หน้าต่างทันที


1
ขอบคุณ ฉันชอบหน้าต่างโต้ตอบ C # ดีกว่า หน้าต่างทันทีไม่เป็นมิตรไม่มีการเติมข้อความอัตโนมัติ 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
พันเอก Panic

-1 คำถามเกี่ยวกับการใช้ C # REPL ใหม่ (หน้าต่างโต้ตอบ) ที่เป็นส่วนหนึ่งของโรสลิน ดูวิดีโอ c9 ของ Don Syme ที่เขาใช้หน้าต่าง F # Interactive ในขณะที่เขาพัฒนา สิ่งที่ดี. channel9.msdn.com/Series/…
John Dhom

25
@JohnDhom ทำไมต้องโหวต? คำตอบของฉันทั้งหมดแสดงวิธีการโต้ตอบกับโค้ดของคุณเองผ่านหน้าต่างโต้ตอบ C # (แม้กระทั่งภาพหน้าจอที่แสดงว่า)
Sloth

8
ใน. Net Core project รายการเมนูบริบทจะไม่ปรากฏดังนั้นจึงจำเป็นต้องใช้เมธอด #r คำตอบนี้เหมาะสำหรับสิ่งนั้น
Ryan

2
ฉันต้องการเพิ่มคำแนะนำที่มีประโยชน์มากกว่านี้: ถ้าคุณต้องการใช้บางสิ่งบางอย่างในเวลาทำงานคุณสามารถเพิ่มคำสั่งนี้ได้อย่างง่ายดาย:#r "System.Runtime"
mostafa8026

70

คุณสามารถใช้คลาสจากโครงการของคุณเอง
เพียงคลิกขวาที่โซลูชันของคุณและเลือก "รีเซ็ตการโต้ตอบจากโครงการ"

หากคุณต้องการข้อมูลเพิ่มเติมนี่คือที่มา:
การใช้หน้าต่างโต้ตอบ C # ที่มาพร้อมกับ Roslyn - ส่วนที่ 2


1
ขอบคุณที่ฟังดูดี อนิจจามันไม่ทำงานตามที่อธิบายไว้ - โครงการใดก็ตามที่ฉันลองทำมันจะปรากฏข้อความแจ้งเตือนข้อผิดพลาดว่า 'ชื่อชุดประกอบที่ไม่ถูกต้อง' เฉื่อยชาไม่ได้อธิบายสิ่งที่การชุมนุมกำลังพูดถึง ฉันเดาว่าซอฟต์แวร์เสีย
พันเอก Panic

@MattHickford: โครงการประเภทใด เราไม่ได้ทำการทดสอบอะไรมากมายนอกเหนือจาก ConsoleApplications และ ClassL ไลบรารีที่เรียบง่าย
Kevin Pilch

ขอบคุณที่สอบถามเควิน ฉันเพิ่งลอง 'รีเซ็ตการโต้ตอบจากโครงการ' ในโครงการขนาดเล็กบางโครงการมันทำงานได้ดี โครงการที่ใช้งานไม่ได้สำหรับที่เชื่อถือได้นั้นคือไลบรารีและแอปพลิเคชั่นที่ซับซ้อนกว่าที่มีการอ้างอิงจำนวนมาก
พันเอก Panic

25
สิ่งนี้ไม่เกี่ยวข้องกับ VS 2015 อีกต่อไป คำสั่งเมนูบริบทหายไปและ#rไม่พบชุดประกอบโครงการของฉัน ความคิดใด ๆ
ygoe

18
ในการอัปเดต VS 2015 3 จะมี 'เริ่มต้นแบบโต้ตอบกับโครงการ' เมื่อคลิกขวาที่โครงการในโซลูชัน (ในโซลูชัน Explorer)
Andrei Pana

44

เพียงอัปเดตจากคำตอบ @ Botz3000

คำสั่งที่คุณต้องการค้นหาเรียกว่า "Initialize Interactive with Project"

ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้ยังเป็นที่น่าสังเกตว่าฉันไม่สามารถหาคำสั่งนี้ถ้าหน้าต่างแบบโต้ตอบ C # ของฉันไม่สามารถดูได้


11
ไม่มันไม่ใช่. ฉันได้มันมาในจุดเดียวกับที่สกรีนช็อตชี้
ทอม

3
@ ดูเหมือนว่าจะทำงานหรือไม่ทำงานตามประเภทของโครงการที่คุณกำลังทำงานด้วย คุณทำงานกับโครงการประเภทใดเมื่อคุณพบมัน
ลุคแฮม

@WizardHammer ฉันเชื่อว่า Class Library
Tom

10
ฉันพยายามที่จะได้รับนี้ในการทำงานกับห้องสมุด NetStandard และตัวเลือกที่ไม่ได้มีในเมนูบริบท
ChadT

15

เป็นที่น่าสังเกตว่าคุณลักษณะนี้ยังไม่รองรับใน VS 2019 สำหรับโครงการ. Net Core

คุณจะไม่พบตัวเลือกและเป็นปัญหาที่ทราบแล้วซึ่งเน้นในคำตอบนี้ ' "เริ่มต้นการโต้ตอบกับโครงการ" หายไปสำหรับ. Net Core Projects ใน Visual Studio 2019 '

วิธีแก้ไขคือใช้คำสั่ง #r (#r "Path / MyDll.dll") เพื่อโหลดแอสเซมบลีด้วยตนเองตามที่เห็นในคำตอบข้างต้น


11

เห็นด้วยอย่างสมบูรณ์ "เริ่มต้นการโต้ตอบกับโครงการ" นั้นยอดเยี่ยม

วิธีการของฉันคือการผลักคลาสเข้าไปในห้องสมุดและใช้ // css_referenceใน C # script หรือ#rในหน้าต่าง C # Interactive

ตัวอย่างเช่น:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.