Интересно, есть ли что-то вроде отдельной версии Visual Studios "Immediate Window"? Иногда я просто хочу протестировать некоторые простые вещи, например DateTime.Parse ("blah") ", чтобы увидеть, работает ли это. Но каждый раз мне приходится создавать новое консольное приложение, вставлять свой код и тестировать его.
К сожалению, Immediate Window работает только тогда, когда я что-то отлаживаю. Может ли PowerShell это сделать? Просто откройте интерфейс командной строки, аналогичный тому, что делает cmd.exe, что позволит мне выполнить некоторый код C#?
Только что добавил тег REPL.
Не знал, что срок, но да, это действительно то, что я ищу :)





Что ж, это не прямой ответ на ваш вопрос, но вы можете взглянуть на этот инструмент:
Кроме того, если вы хотите увидеть созданный IL или аналогичный, есть инструмент, который подключается к Отражатель, называется Snippy, на основе инструмента Snippy, который Джон упоминает в своем собственном ответе ниже.
Все это очень приятно использовать.
Если вы используете Mono, вот это:
Don Box взломал что-то очень простое тоже несколько лет назад.
Проект Mono включает интерактивную оболочку C#, возможно, это именно то, что вы ищете.
По строкам ответа lassevk у меня есть "Сниппи". Он был разработан для C# in Depth, и пользовательский интерфейс довольно хлам, но он работает - и позволяет вам писать дополнительные члены (методы, вложенные классы и т. д.), Например
public static void Foo()
{
Console.WriteLine("Hello");
}
...
Foo();
(... используется, чтобы сказать Сниппи, что все, что находится здесь, принадлежит Main.)
Я также считаю, что SharpDevelop настолько быстрый и легкий, что это самый простой способ быстро запустить тестовый проект.
Linqpad - все время так использую. http://www.linqpad.net/
Пусть вас не вводит в заблуждение название - оно просто описывает исходную мотивацию для этого, а не его функциональность.
Совсем недавно он выпустил версию с правильным завершением операторов - это платное дополнение (основной инструмент бесплатный), но я думаю, небольшая сумма денег и того стоит.
LINQPad был лучшим вложением, которое я когда-либо делал, более ценным, чем R # или что-либо еще.
LINQPad - лучший способ изучить библиотеки или быстро создать прототип решения. Автозаполнение + Встроенная документация + Немедленный вывод = Win.
См. Ответ @Athari: «Интерактивное окно C# и csi.exe» (+1)
Как вы предполагаете, 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 не очень хорошо справляется с универсальными методами.
Вам может пригодиться Object Test Bench. Это не очень хорошо известно, но позволяет создавать экземпляры классов, выполнять статические методы и так далее. Это может быть полезно для изучения того, как использовать незнакомые API-интерфейсы, или для быстрой отладки ваших собственных классов и методов, сохраняя создание тестового набора для простых проверок.
Вы можете найти документацию MSDN здесь:
http://msdn.microsoft.com/en-us/library/c3775d98%28VS.80%29.aspx
Я обнаружил это несколько дней назад «случайно». Это действительно очень полезно, хотя и не совсем то, что я ищу, но все же +1, потому что это действительно «скрытая жемчужина» Visual Studio.
Если бы вы могли немного подождать ... похоже, что для 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, что позволит очень быстро написать код и посмотреть, как он работает.

Нам нравится LINQPad, но в нем нет REPL, код выполняется один раз, и вы не можете больше ничего делать с результатами, если не измените сценарий и не запустите весь сценарий снова. Это нормально, но иногда, если вам нужно еще больше ощущения сценария, тогда оценить ваш код в REPL действительно приятно и удобно.
Попробуйте скрипты, он не интегрирован в VS IDE, но позволяет вводить и запускать C# в окне сценария без необходимости в компиляторе проекта и т. д.
это действительно хорошо. Его можно легко установить с шоколадом, тогда вы просто запустите его из PowerShell с помощью «скриптов», чтобы войти в режим REPL.
Окно 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.csxto execute a script file or type simplycsito 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.
В принципе, теперь у вас есть:
csi foo.csx от Dev Cmd Promptcsi из командной строки Dev CmdОбновление: http://avillenas.com/post/interactive-c
Что ж, вы можете попробовать это.
Я сделал то, что ты хотел. Нажмите здесь, чтобы увидеть гифку
Исходники проекта Roslyn содержат REPL под названием CSI (http://sourceroslyn.io/#csi/Csi.cs). Класс Csi в настоящее время является внутренним, но с проектом «csi» (Roslyn.sln: Interactive / Hosts / csi) доступно исполняемое консольное приложение, поддерживающее e. грамм. команда #r для загрузки сборки и #load для загрузки и выполнения файлов сценария (запустите csi и используйте #help).
Интересно, сложно было бы написать его с помощью Reflection.Emit