Cửa sổ tương tác C # có thể tương tác với mã của tôi không?


159

Trong Visual Studio 2015 trở lên, tôi có thể mở 'cửa sổ tương tác C #' và chạy mã:

> 5 + 3
8

Dễ thương đó. Bây giờ làm thế nào tôi có thể tương tác các lớp mã của tôi ? Giả sử tôi có một dự án mở.

> 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 không phải là cửa sổ tương tác. Đó là API trình biên dịch .NET. Bạn có chắc chắn không bỏ lỡ những thứ?
Tigran

3
Đây là một tính năng được gửi cùng với blog Roslyn.msdn.com/b/csharpfaq/archive/2012/01/30/NH
Đại tá Panic

Tôi luôn sử dụng cửa sổ Ngay lập tức tiêu chuẩn cho việc này - cũng hoạt động với các loại của riêng bạn.
Polyfun

2
'Cửa sổ tiêu chuẩn ngay lập tức là gì?'
Đại tá Panic

@MattHickford Xem câu trả lời cập nhật của tôi để biết thêm thông tin
lười

Câu trả lời:


220

Khi sử dụng Visual Studio 2015:

Bạn có thể mở cửa sổ Tương tác bằng cách điều hướng đến Chế độ xem> Windows khác> C # Interactive ,

Sau đó, chỉ cần nhấp chuột phải vào dự án của bạn và chạy Khởi tạo Tương tác với Dự án từ menu ngữ cảnh.


Đối với phiên bản cũ hơn:

Để sử dụng Cửa sổ tương tác C # với mã của bạn, trước tiên hãy đảm bảo bạn biên dịch mã của mình, sau đó thêm một tham chiếu đến cụm kết quả với #rlệnh như sau:

Dấu nhắc lệnh C #


Bạn cũng có thể sử dụng Cửa sổ ngay lập tức để tương tác với mã của mình, như vậy:

Cửa sổ ngay lập tức


1
Cảm ơn. Tôi thích cửa sổ tương tác C # tốt hơn. Cửa sổ ngay lập tức không thân thiện, không có tự động hoàn thành. 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
Đại tá Panic

-1 câu hỏi là về việc sử dụng C # REPL (cửa sổ tương tác) mới là một phần của roslyn. Hãy xem các video c9 của Don Syme nơi anh ấy sử dụng Cửa sổ tương tác F # khi anh ấy phát triển. Đồ tốt. channel9.msdn.com/Series/ từ
John Dhom

25
@JohnDhom Tại sao downvote? Câu trả lời của tôi hoàn toàn cho thấy cách tương tác với mã của riêng bạn thông qua cửa sổ tương tác C # (thậm chí còn có một ảnh chụp màn hình cho thấy điều đó).
lười

8
Trong các dự án .Net Core, mục menu ngữ cảnh không xuất hiện, do đó, phương thức #r là bắt buộc. Câu trả lời này là hoàn hảo cho điều đó.
Ryan

2
Tôi muốn thêm một gợi ý hữu ích khác: nếu bạn muốn sử dụng một số thứ trong thời gian chạy, bạn có thể dễ dàng thêm chỉ thị này:#r "System.Runtime"
mostafa8026

70

Bạn có thể sử dụng các lớp từ dự án của riêng bạn.
Chỉ cần nhấp chuột phải vào giải pháp của bạn và chọn "Đặt lại tương tác từ dự án".

Nếu bạn cần thêm thông tin, đây là nguồn:
Sử dụng Cửa sổ tương tác C # đi kèm với Roslyn - Phần 2


1
Cảm ơn, điều đó nghe có vẻ đúng. Than ôi, nó không hoạt động như mô tả của bất cứ dự án nào tôi thử, nó bật lên một cảnh báo lỗi với nội dung 'tên lắp ráp không hợp lệ'. Thật khó chịu, nó không giải thích nó đang nói về hội nghị nào. Tôi đoán phần mềm bị hỏng.
Đại tá Panic

@MattHickford: Dự án thuộc loại dự án nào? Chúng tôi chưa thực hiện nhiều thử nghiệm ngoài các Ứng dụng và Thư viện lớp đơn giản.
Kevin Pilch

Cảm ơn đã hỏi Kevin. Tôi vừa thử 'thiết lập lại tương tác từ dự án' trên một số dự án nhỏ hơn, nó đã hoạt động tốt. Các dự án mà nó không hoạt động đáng tin cậy là các thư viện và ứng dụng phức tạp hơn với nhiều tài liệu tham khảo.
Đại tá Panic

25
Không còn điều này áp dụng cho VS 2015 nữa. Lệnh menu ngữ cảnh không còn nữa và #rkhông tìm thấy tập hợp dự án của tôi. Có ý kiến ​​gì không?
ygoe

18
Trong Bản cập nhật 3 của VS 2015, có 'Khởi tạo tương tác với dự án' khi nhấp chuột phải vào một dự án trong giải pháp (trong Solution Explorer).
Andrei Pana

44

Chỉ cần một bản cập nhật từ câu trả lời @ Botz3000.

Lệnh bạn muốn tìm bây giờ được gọi là "Khởi tạo tương tác với dự án"

nhập mô tả hình ảnh ở đây

Ngoài ra, điều đáng chú ý là tôi không thể tìm thấy lệnh này nếu cửa sổ tương tác C # của tôi không thể xem được.


11
Không, không phải vậy. Tôi đã có nó ở chính xác cùng một điểm với ảnh chụp màn hình.
Tom

3
@Tom nó dường như hoạt động hoặc không hoạt động dựa trên loại dự án bạn đang làm việc với. loại dự án bạn đã làm việc với khi bạn tìm thấy nó là gì?
Luke Hammer

@Wizard Hammer Tôi tin rằng Thư viện lớp
Tom

10
Tôi đang cố gắng để ứng dụng này hoạt động với thư viện NetSt Chuẩn và tùy chọn này không có trong menu ngữ cảnh
ChadT

15

Điều đáng chú ý là tính năng này chưa được hỗ trợ trong VS 2019 cho dự án .Net Core.

Bạn sẽ không tìm thấy tùy chọn và đó là một vấn đề được biết đến như được nhấn mạnh trong câu trả lời này ' "Khởi tạo tương tác với dự án" bị thiếu cho .Net Core Project trong Visual Studio 2019 '

Cách giải quyết là sử dụng lệnh #r (#r "Path / MyDll.dll") để tải lắp ráp theo cách thủ công như đã thấy trong câu trả lời ở trên.


10

Hoàn toàn đồng ý "Khởi tạo tương tác với dự án" là tuyệt vời.

Cách tiếp cận của tôi là đẩy các lớp vào thư viện và sử dụng // css numference trong tập lệnh C # hoặc #r trong cửa sổ C # Interactive

Ví dụ:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.