C# Console / Интерпретатор CLI?

Интересно, есть ли что-то вроде отдельной версии Visual Studios "Immediate Window"? Иногда я просто хочу протестировать некоторые простые вещи, например DateTime.Parse ("blah") ", чтобы увидеть, работает ли это. Но каждый раз мне приходится создавать новое консольное приложение, вставлять свой код и тестировать его.

К сожалению, Immediate Window работает только тогда, когда я что-то отлаживаю. Может ли PowerShell это сделать? Просто откройте интерфейс командной строки, аналогичный тому, что делает cmd.exe, что позволит мне выполнить некоторый код C#?

Интересно, сложно было бы написать его с помощью Reflection.Emit

Joel Coehoorn 03.12.2008 17:23

Только что добавил тег REPL.

mackenir 03.12.2008 17:30

Не знал, что срок, но да, это действительно то, что я ищу :)

Michael Stum 03.12.2008 17:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
29
3
8 353
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

Что ж, это не прямой ответ на ваш вопрос, но вы можете взглянуть на этот инструмент:

Кроме того, если вы хотите увидеть созданный IL или аналогичный, есть инструмент, который подключается к Отражатель, называется Snippy, на основе инструмента Snippy, который Джон упоминает в своем собственном ответе ниже.

Все это очень приятно использовать.

Если вы используете Mono, вот это:

CsharpRepl

Don Box взломал что-то очень простое тоже несколько лет назад.

Проект Mono включает интерактивную оболочку C#, возможно, это именно то, что вы ищете.

http://www.mono-project.com/CsharpRepl

По строкам ответа lassevk у меня есть "Сниппи". Он был разработан для C# in Depth, и пользовательский интерфейс довольно хлам, но он работает - и позволяет вам писать дополнительные члены (методы, вложенные классы и т. д.), Например

public static void Foo()
{ 
    Console.WriteLine("Hello");
}
...
Foo();

(... используется, чтобы сказать Сниппи, что все, что находится здесь, принадлежит Main.)

Я также считаю, что SharpDevelop настолько быстрый и легкий, что это самый простой способ быстро запустить тестовый проект.

Ответ принят как подходящий

Linqpad - все время так использую. http://www.linqpad.net/

Пусть вас не вводит в заблуждение название - оно просто описывает исходную мотивацию для этого, а не его функциональность.

Совсем недавно он выпустил версию с правильным завершением операторов - это платное дополнение (основной инструмент бесплатный), но я думаю, небольшая сумма денег и того стоит.

LINQPad был лучшим вложением, которое я когда-либо делал, более ценным, чем R # или что-либо еще.

Michael Stum 22.07.2012 11:41

LINQPad - лучший способ изучить библиотеки или быстро создать прототип решения. Автозаполнение + Встроенная документация + Немедленный вывод = Win.

Omar 06.11.2014 21:13

См. Ответ @Athari: «Интерактивное окно C# и csi.exe» (+1)

minus one 15.01.2018 19:13

Как вы предполагаете, PowerShell может делать то, что вы хотите. Например, чтобы протестировать DateTime.Parse, следующий лайнер поможет:

PS C: \ Documents and Settings \ Dan> [System.DateTime] :: Parse ("Бла")
Исключение, вызывающее «Анализ» с аргументом (-ами) «1»: «Строка не была распознана как допустимый DateTime. Имеется неизвестный слово, начинающееся с индекса 0. " В строке: 1 символ: 25 + [System.DateTime] :: Parse (<<<< "Мля")

PS C: \ Documents and Settings \ Dan> [System.DateTime] :: Parse ("1/2/3")

01 февраля 2003 00:00:00

Обратите внимание, что в приведенном выше примере используется текущая версия PowerShell (v1.0). Следующая версия PowerShell позволит вам более напрямую сочетать C# со сценариями PowerShell. Чтобы подогреть аппетит, посмотрите 7-минутный скринкаст C# в PowerShell от Дуг Финке. Очень впечатляюще!

+1. Главное, с чем здесь могут возникнуть проблемы, - это то, что PowerShell не очень хорошо справляется с универсальными методами.

JohnL 06.06.2013 21:59

Вам может пригодиться Object Test Bench. Это не очень хорошо известно, но позволяет создавать экземпляры классов, выполнять статические методы и так далее. Это может быть полезно для изучения того, как использовать незнакомые API-интерфейсы, или для быстрой отладки ваших собственных классов и методов, сохраняя создание тестового набора для простых проверок.

Вы можете найти документацию MSDN здесь:

http://msdn.microsoft.com/en-us/library/c3775d98%28VS.80%29.aspx

Я обнаружил это несколько дней назад «случайно». Это действительно очень полезно, хотя и не совсем то, что я ищу, но все же +1, потому что это действительно «скрытая жемчужина» Visual Studio.

Michael Stum 03.12.2008 18:32

Если бы вы могли немного подождать ... похоже, что для C# 4.0 может появиться C# эквивалент Ruby irb. Андерс Х. продемонстрировал сеанс интерактивной консоли, где вы могли ввести произвольный код C# и увидеть результаты в его статье «Будущее C#» на PDC 2008. Вы даже могли открыть из него окно WPF, а затем поиграть с ним через интерфейс консоли. Довольно круто.

Используйте LINQPad.

Несмотря на название, он может выполнять любой код C# или VB, от простых выражений до целых классов.

Кроме того, он может визуализировать целые графы объектов в результатах.

Вы даже можете добавлять ссылки на свои собственные сборки.

Если вы знаете и любите Python, тогда IronPython может быть хорошей альтернативой. Он поставляется с (Python) консолью REPL (ipy.exe), где вы можете импортировать и использовать все типы .Net.

Я считаю его полезным для тестирования мелочей, в точности как DateTime.Parse("Blah").

Обратите внимание, что на самом деле он не может выполнять код C#, но если все, что вам нужно, это доступ к .Net, то это прекрасно. Кроме того, если вы установите Инструменты IronPython для VS, вы можете запустить сеанс REPL прямо в VS с помощью одного сочетания клавиш (Alt + I) и оставить его запущенным в закрепленном окне на тот момент, когда он вам понадобится.

Попробуйте Среда сценария C# REPL, который является частью Платформа O2. Это именно то, о чем вы просите.

Это даст вам идеальную среду для опробования всех функций и API C# (концептуально среда O2 REPL похожа на LinqPAD)

Вам также стоит взглянуть на Roslyn от Microsoft. На Несколько инструментов на основе Roslyn (все работают автономно вне VisualStudio) первый - это простой Roslyn REPL

Мы только что выпустили CShell - полнофункциональную IDE C# REPL. Он поддерживает автозавершение кода, файлы сценариев, добавление ссылок и действительно расширяемый. Также мы планируем в ближайшее время добавить поддержку NuGet, что позволит очень быстро написать код и посмотреть, как он работает.

http://cshell.net/

CShell screenshot

Нам нравится LINQPad, но в нем нет REPL, код выполняется один раз, и вы не можете больше ничего делать с результатами, если не измените сценарий и не запустите весь сценарий снова. Это нормально, но иногда, если вам нужно еще больше ощущения сценария, тогда оценить ваш код в REPL действительно приятно и удобно.

Попробуйте скрипты, он не интегрирован в VS IDE, но позволяет вводить и запускать C# в окне сценария без необходимости в компиляторе проекта и т. д.

это действительно хорошо. Его можно легко установить с шоколадом, тогда вы просто запустите его из PowerShell с помощью «скриптов», чтобы войти в режим REPL.

Morgan T. 15.10.2013 23:01

Окно C# Интерактивный и csi.exe REPL были добавлены в Visual Studio 2015 с обновлением 1:

Introducing Interactive

The Interactive Window is back! The C# Interactive Window returns in Visual Studio 2015 Update 1 along with a couple other interactive treats:

  • C# Interactive. The C# Interactive window is essentially a read-eval-print-loop (REPL) that allows you to play and explore with .NET technologies while taking advantage of editor features like IntelliSense, syntax-coloring, etc. Learn more about how to use C# Interactive on Channel 9 or by reading our beginner’s walkthrough.

  • csi. If you don’t want to open Visual Studio to play around with C# or run a script file, you can access the interactive engine from the Developer Command Prompt. Type csi /path/myScript.csx to execute a script file or type simply csi to drop inside the command-line REPL.

  • Scripting APIs. The Scripting APIs give you the ability to execute snippets of C# code in a host-created execution environment. You can learn more about how to create your own C# script engine by checking out our code samples.

См. Что нового в Visual Studio Update 1 для управляемых языков .NET.

В принципе, теперь у вас есть:

  • IDE REPL - Интерактивное окно C# в VS
  • Интерпретатор скриптов - csi foo.csx от Dev Cmd Prompt
  • Командная строка REPL - csi из командной строки Dev Cmd
  • API сценариев

Обновление: http://avillenas.com/post/interactive-c

Что ж, вы можете попробовать это.

  1. Загрузите и установите dotnet.github.io
  2. Открыть cmd
  3. Введите "dotnet repl"
  4. Введите все, что вам нужно.

Я сделал то, что ты хотел. Нажмите здесь, чтобы увидеть гифку

Исходники проекта Roslyn содержат REPL под названием CSI (http://sourceroslyn.io/#csi/Csi.cs). Класс Csi в настоящее время является внутренним, но с проектом «csi» (Roslyn.sln: Interactive / Hosts / csi) доступно исполняемое консольное приложение, поддерживающее e. грамм. команда #r для загрузки сборки и #load для загрузки и выполнения файлов сценария (запустите csi и используйте #help).

Другие вопросы по теме