Utilisation d'un notebook dans VS Code à l'aide de l'extension "dotnet interactive"

Capture d'écran du cahier de VS Code
Capture d'écran du cahier de VS Code

Aujourd'hui, je veux vous parler d'un outil aussi merveilleux que "dotnet interactif". Je vais montrer par mon exemple comment et pourquoi j'ai commencé à l'utiliser, et décrire brièvement par où commencer.





Problème

, . , , . « » « » , .





, . , , , , "dotnet-interactive" notebook'a " "-""-""-"", .





notebook'a

, .net5 sdk VS Code. , ".NET Interactive Notebooks". "Preview", .





, , , . VS Code ".NET Interactive: Create new blank notebook" notebook.





:





#load "Load.fsx"

open Load

let Experiment = loadSep "2021.02.03_15.55.58_gen.sep"
      
      



F# , xml-:





#r "nuget: System.Text.Encoding.CodePages"
#r "AKIM.Protocol.dll"

open System.IO
open AKIM.Protocol
open System.Xml.Serialization
open System.Text

let loadSep path=
    
    let deserializeXml (xml : string) =
        let toBytes (x : string) = Encoding.UTF8.GetBytes x
        let xmlSerializer = XmlSerializer(typeof<Experiment>)
        use stream = new MemoryStream(toBytes xml)
        xmlSerializer.Deserialize stream :?> Experiment

    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)    
    deserializeXml (File.ReadAllText(path, Encoding.GetEncoding(1251)))
      
      



nuget dto-, C#.





notebook'a c#-intaractive # f#,





#r "AKIM.Protocol.dll"

using AKIM.Protocol;
using AKIM.Protocol.Events;
using AKIM.Protocol.Events.OperatorSvn;
using AKIM.Protocol.Events.OperSb;
using AKIM.Protocol.Events.RespUnits;
using AKIM.Protocol.Events.Intruders;
using AKIM.Protocol.Events.Sens;
using AKIM.Protocol.Events.System;

#!share --from fsharp Experiment
      
      



, . ,





var allTests = Experiment.Tests.Count;

var penetrations = Experiment.Tests.Where(t => t.Events.Last() is PenetrationEvent).Count();
var nonPenetrations = Experiment.Tests.Where(t => t.Events.Last() is NonPenetEvent).Count();

var eve = Experiment.Tests.First().Events.FirstOrDefault(t => t is VisContactEvent);

Console.WriteLine(eve?.GetDescription());

Console.WriteLine($"  {penetrations}  {allTests}")
      
      



:





, :





#r "nuget: XPlot.Plotly"

#!share --from csharp penetrations 
#!share --from csharp nonPenetrations
#!share --from csharp allTests

open XPlot.Plotly

Chart.Pie(seq {("- ",penetrations);
               ("",allTests- penetrations-nonPenetrations);
               ("  ",nonPenetrations)}) |> Chart.Show
      
      



, , (upd: XPlot.Plotly.Interactive. c# f# ( )).





Tableau récapitulatif

, F# , , , . , , notebook , .





?

# "*.csx" #-interactive. , . , , . markdown $$...$$. (upd: , , markdown )





, .net . : , - , F# C#, , , manage' - . , , , , , ( ).





, Arkadiy Kuznetsov, .





. notebook' VS Code.





.





Le navet officiel, qui a également une documentation

.NET Interactive + ML.NET

Nouvelles fonctionnalités f # (utilise dotnet-intaractive au début de la vidéo)








All Articles