Протестируйте простые c# выражения кода в Visual Studio - PullRequest
5 голосов
/ 29 января 2020

Я хотел бы знать, как мне поступить, чтобы протестировать простые C# выражения

1) в Visual Studio и
2) не в режиме отладки, в режиме разработки

Скажем, я хочу проверить, что вернет этот код

?DateTime.ParseExact("2016", "yyyy")

Или

int i;
int.TryParse("x55", out i);
?i

Я получил в ближайшем окне следующее сообщение:

?DateTime.ParseExact("2016", "yyyy") 
The expression cannot be evaluated while in design mode.

Ответы [ 4 ]

9 голосов
/ 29 января 2020

Интерактивное окно (не путать с окном немедленное ) даст то, что вы ищете.

Доступ к нему может получить View > Other Windows > C# Interactive. По сути, это интерактивный сеанс компилятора, который запускается независимо от того, выполняется проект или нет, что позволяет произвольно выполнять код без необходимости создавать и запускать проект.

Вот пример того, что можно сделать в этом окне

> Random gen = new Random();
> DateTime RandomDay()
. {
.     int monthsBack = 1;
.     int monthsForward = 3;
.     DateTime startDate = DateTime.Now.AddMonths(-monthsBack);
.     DateTime endDate = DateTime.Now.AddMonths(monthsForward);    
.     int range = (endDate - startDate).Days;
.     return startDate.AddDays(gen.Next(range));
. }
> RandomDay()
[28/01/2020 15:11:51]

, а также с использованием внешних библиотек

> Newtonsoft.Json.Linq.JObject.Parse("{'myArticle': { 'myDate': '2020-03-24T00:00:00'}  }")
(1,1): error CS0103: The name 'Newtonsoft' does not exist in the current context

> #r "C:\Users\MyUser\.nuget\packages\newtonsoft.json\11.0.2\lib\netstandard2.0\Newtonsoft.Json.dll"

> Newtonsoft.Json.Linq.JObject.Parse("{'myArticle': { 'myDate': '2020-03-24T00:00:00'}  }")
JObject(1) { JProperty(1) { JObject(3) { JProperty(1) { [24/03/2020 00:00:00] } } } }
3 голосов
/ 29 января 2020

непосредственное окно не будет работать в режиме разработки. вам нужно использовать «C# интерактивное окно», которое построено поверх Roslyn, поэтому установите Roslyn и следуйте ниже Wiki

https://github.com/dotnet/roslyn/wiki/Interactive-Window

C# Интерактивное окно, открытое по пути меню:

Виды> Другое Windows> C# Интерактив

0 голосов
/ 30 января 2020

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

Screenshot of LINQPad

или блокнот Jupyter в Попробуйте. NET:

Screenshot from the code editor of Try .NET

0 голосов
/ 29 января 2020

Я решил вашу проблему в Visual Studio 2019,

  1. сначала я устанавливаю Microsoft.AspNetCore. Mvc .Newtonsoft. json с помощью диспетчера пакетов nuget.

  2. секунда с использованием этого метода, определенного в классе stati c non generi c, для выгрузки любого выражения, которое вы хотите проверить.

      public static void DumpObject(this object value)    
      {
    
       Console.WriteLine(JsonConvert.SerializeObject(value, Formatting.Indented));  
    
      }
    

Примечание: не забудьте добавить, используя Newtonsoft.Json;

наконец, сформировать метод Main, вызвать Class.YourDumpMethod (AnyObjToVerify); как следует:

static void Main()

{

 DateTime dt = DateTime.ParseExact("2016","yyyy", null, DateTimeStyles.None);

 Dump.DumpObject(dt);

 int i;

 bool b = int.TryParse("55", out i);

 Dump.DumpObject(i);

}

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...