Чи може інтерактивне вікно 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?)

Рослін - це не інтерактивне вікно. Це API .NET компілятора. Ви впевнені, що не пропускаєте речі?
Тигран

3
Це одна функція, що постачається з блогами
полковник Паніка

Я завжди використовую для цього стандартне вікно негайного пошуку - працює і з вашими власними типами.
Поліфун

2
Що таке "стандартне негайне вікно?"
Полковник Паніка

@MattHickford Дивіться мою оновлену відповідь для отримання додаткової інформації
лень

Відповіді:


221

Під час використання Visual Studio 2015:

Ви можете відкрити інтерактивне вікно, перейшовши до пункту Перегляди> Інші Windows> C # Interactive ,

Потім просто клацніть правою кнопкою миші ваш проект та запустіть Initialise Interactive with Project у контекстному меню.


Для старих версій:

Щоб використовувати інтерактивне вікно C # зі своїм кодом, переконайтеся, що спершу скомпілюйте свій код, а потім додайте посилання на отриману збірку за допомогою #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
Полковник Паніка

-1 питання стосується використання нового C # REPL (інтерактивного вікна), що входить до складу Росліна. Подивіться відео c9 Дон Сайм, де він використовує інтерактивне вікно F # під час свого розвитку. Хороший матеріал. kanal9.msdn.com/Series/…
Джон Дом

25
@JohnDhom Чому потік? Мої відповіді повністю показують, як взаємодіяти з власним кодом через інтерактивне вікно C # (є навіть скріншот, що показує це).
лень

8
У проектах .Net Core пункт контекстного меню не відображається, тому потрібен метод #r. Ця відповідь ідеально підходить для цього.
Райан

2
Я хочу додати ще один корисний підказку: якщо ви хочете використати деякі речі під час запуску, ви можете легко додати цю директиву:#r "System.Runtime"
mostafa8026

70

Ви можете використовувати заняття з власного проекту.
Просто клацніть правою кнопкою миші на вашому рішенні та виберіть "Скинути інтерактивний проект".

Якщо вам потрібна додаткова інформація, ось джерело:
Використання інтерактивного вікна C #, яке постачається з Рослін, - частина 2


1
Дякую, це звучить правильно. На жаль, це не працює, як описано. Який би проект я не пробував, у ньому з’являється попередження про помилку із зазначенням "невірне ім'я збірки". Розчаровує, це не пояснює, про яку збірку йдеться. Я думаю, що програмне забезпечення зламане.
Полковник Паніка

@MattHickford: Який тип проекту є проектом? Ми не провели багато тестування за рамками простих ConsoleApplications та ClassLibraries.
Кевін Пілч

Дякую, що попросили Кевіна. Я щойно спробував "скинути інтерактивне з проекту" на деякі менші проекти, він спрацював правильно. Проекти, в яких він не працює надійно, є складнішими бібліотеками та програмами з багатьма посиланнями.
Полковник Паніка

25
Нічого цього більше не стосується VS 2015. Команда контекстного меню #rвідсутня і не знаходить моїх проектів. Будь-які ідеї?
ygoe

18
У VS 2015 Update 3 є "Ініціалізувати інтерактив з проектом" при натисканні правою кнопкою миші на проект у рішенні (у Провіднику рішень).
Андрій Пана

44

Просто оновлення з відповіді @ Botz3000.

Команда, яку ви хочете знайти, тепер називається "Ініціалізувати інтерактивний проект"

введіть тут опис зображення

Також варто зазначити, що я не зміг знайти цю команду, якщо моє інтерактивне вікно C # не було видно.


11
Ні це не так. У мене це саме те місце, що вказує на скріншоті.
Том

3
@Тому, здається, функціонує чи не функціонує залежно від типу проекту, з яким ви працюєте. з яким типом проекту ви працювали, коли ви його знайшли?
Люк Хаммер

@WizardHammer Я вважаю, бібліотека класів
Том

10
Я намагаюся змусити це працювати з бібліотекою NetStandard, і в контекстному меню цього варіанту немає
ChadT

15

Варто зазначити, що функція ще не підтримується в VS 2019 для .Net Core проекту.

Ви не знайдете цього варіанту, і це відоме питання, як висвітлено в цій відповіді: " " Ініціалізувати інтерактивний проект "відсутній для .Net Core Projects у Visual Studio 2019 "

Вирішення проблеми полягає у використанні команди #r (#r "Шлях / MyDll.dll") для завантаження збірки вручну, як видно з відповіді вище.


11

Цілком погоджуюся, що "Ініціалізувати інтерактивний проект" - це круто.

Мій підхід - перенести заняття в бібліотеку і використовувати // css_reference в C # скрипті або #r в C # Інтерактивному вікні

Наприклад:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.