Condividi tramite


Introduzione ai linguaggi specifici di dominio

Questo argomento illustra i concetti di base nella definizione e nell'uso di un linguaggio specifico del dominio creato con Modeling SDK per Visual Studio.

Nota

Text Template Transformation SDK e Visual Studio Modeling SDK vengono installati automaticamente quando si installano funzionalità specifiche di Visual Studio. Per altri dettagli, vedere questo post di blog.

Se non si ha esperienza con le licenze DSL, è consigliabile usare il lab degli strumenti DSL, disponibile in questo sito: Visualizzazione e modellazione di SDK

Cosa è possibile fare con un linguaggio specifico del dominio?

Un linguaggio specifico del dominio è una notazione, in genere grafica, progettata per essere usata per uno scopo specifico. Al contrario, i linguaggi come UML sono per utilizzo generico. In un linguaggio DSL è possibile definire i tipi di elemento del modello e le relative relazioni e come vengono presentati sullo schermo.

Dopo aver progettato un linguaggio DSL, è possibile distribuirlo come parte di un pacchetto VSIX (Visual Studio Integration Extension). Gli utenti lavorano con il linguaggio DSL in Visual Studio:

Diagramma, casella degli strumenti e finestra di esplorazione dell'albero genealogico

La notazione fa solo parte di un linguaggio DSL. Insieme alla notazione, il pacchetto VSIX include strumenti che gli utenti possono applicare per aiutarli a modificare e generare materiale dai propri modelli.

Una delle principali applicazioni di DSLS consiste nel generare codice di programma, file di configurazione e altri artefatti. Soprattutto nei progetti di grandi dimensioni e nelle linee di prodotto, in cui verranno create diverse varianti di un prodotto, generando molti degli aspetti variabili delle DSL può fornire un notevole aumento dell'affidabilità e una risposta molto rapida ai cambiamenti dei requisiti.

La parte restante di questa panoramica è una procedura dettagliata che introduce le operazioni di base di creazione e uso di un linguaggio specifico del dominio in Visual Studio.

Prerequisiti

Per definire un linguaggio specifico di dominio (Domain-Specific Language, DSL) devono essere installati i componenti seguenti:

Componente Collega
Visual Studio http://go.microsoft.com/fwlink/?LinkId=185579
Visual Studio SDK https://go.microsoft.com/fwlink/?linkid=2166172
Modeling SDK per Visual Studio

Nota

Il componente Trasformazione modello di testo viene installato automaticamente come parte del carico di lavoro sviluppo di estensioni di Visual Studio. È anche possibile installarlo dalla scheda Singoli componenti di Programma di installazione di Visual Studio, nella categoria SDK, librerie e framework. Installare il componente Modeling SDK dalla scheda Singoli componenti .

Creare una soluzione DSL

Per creare un nuovo linguaggio specifico del dominio, creare una nuova soluzione di Visual Studio usando il modello di progetto Language specifico del dominio.

  1. Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.

  2. In Tipi di progetto espandere il nodo Altri tipi di progetto e fare clic su Estendibilità.

  3. Fare clic su Progettazione linguaggio specifico del dominio.

    Finestra di dialogo per la creazione di una soluzione DSL

  4. Nella casella Nome digitare FamilyTree. Fare clic su OK.

    Viene visualizzata la Creazione guidata lingua specifica del dominio e viene visualizzato un elenco di soluzioni DSL modello.

    Fare clic su ogni modello per visualizzare una descrizione,

    I modelli sono utili punti di partenza. Ognuno di essi fornisce un DSL funzionante completo, che è possibile modificare in base alle proprie esigenze. In genere, è consigliabile scegliere il modello più vicino a quello che si vuole creare.

  5. Per questa procedura dettagliata, scegliere il modello Lingua minima.

  6. Immettere un'estensione di file per il linguaggio DSL nella pagina appropriata della procedura guidata. Questa estensione verrà usata dai file contenenti le istanze del linguaggio DSL.

    • Scegliere un'estensione non associata ad alcuna applicazione nel computer o in qualsiasi computer in cui si desidera installare il linguaggio DSL. Ad esempio, docx e htm sarebbero inaccettabili estensioni di file.

    • La procedura guidata avviserà se l'estensione immessa è in uso come DSL. Provare a usare un'estensione di file diversa. È anche possibile reimpostare l'istanza sperimentale di Visual Studio SDK per eliminare le precedenti finestre di progettazione sperimentali. Nel menu Start di Windows digitare reimpostare Visual Studio e quindi eseguire il comando Reimposta istanza sperimentale di Microsoft Visual Studio corrispondente alla versione di Visual Studio.

  7. Esaminare le altre pagine e quindi fare clic su Fine.

    Viene generata una soluzione che contiene due progetti. Sono denominati Dsl e DslPackage. Verrà aperto un file diagramma denominato DslDefinition.dsl.

    Nota

    La maggior parte del codice che è possibile visualizzare nelle cartelle nei due progetti viene generata da DslDefinition.dsl. Per questo motivo, la maggior parte delle modifiche al linguaggio DSL viene apportata in questo file.

L'interfaccia utente ora è simile a quella nell'immagine seguente.

finestra di progettazione dsl

Questa soluzione definisce un linguaggio specifico di dominio. Per altre informazioni, vedere Panoramica dell'interfaccia utente degli strumenti di linguaggio specifici del dominio.

Le parti importanti della soluzione DSL

Si notino gli aspetti seguenti della nuova soluzione:

  • Dsl\DslDefinition.dsl Questo è il file visualizzato quando si crea una soluzione DSL. Quasi tutto il codice nella soluzione viene generato da questo file e la maggior parte delle modifiche apportate a una definizione DSL viene apportata qui. Per altre informazioni, vedere Uso del diagramma delle definizioni DSL.

  • Progetto Dsl Questo progetto contiene codice che definisce il linguaggio specifico del dominio.

  • Progetto DslPackage Questo progetto contiene codice che consente l'apertura e la modifica delle istanze del linguaggio DSL in Visual Studio.

Esecuzione del linguaggio DSL

È possibile eseguire la soluzione DSL non appena è stata creata. Successivamente, è possibile modificare gradualmente la definizione DSL, eseguendo di nuovo la soluzione dopo ogni modifica.

Per sperimentare con il linguaggio DSL

  1. Fare clic su Trasforma tutti i modelli nella barra degli strumenti Esplora soluzioni. Questa operazione rigenera la maggior parte del codice sorgente da DslDefinition.dsl.

    Nota

    Ogni volta che si modifica DslDefinition.dsl, è necessario fare clic su Trasforma tutti i modelli prima di ricompilare la soluzione. È possibile automatizzare questo passaggio. Per altre informazioni, vedere Come automatizzare la trasformazione di tutti i modelli.

  2. Premere F5o scegliere Avvia debug dal menu Debug.

    Il linguaggio DSL viene compilato e installato nell'istanza sperimentale di Visual Studio.

    Viene avviata un'istanza sperimentale di Visual Studio. L'istanza sperimentale accetta le impostazioni da un sottoalbero separato del Registro di sistema, in cui le estensioni di Visual Studio vengono registrate a scopo di debug. Le normali istanze di Visual Studio non hanno accesso alle estensioni registrate in questa posizione.

  3. Nell'istanza sperimentale di Visual Studio aprire il file del modello denominato Test da Esplora soluzioni.

    o

    Fare clic con il pulsante destro del mouse sul progetto debug, scegliere Aggiungi e quindi fare clic su Elemento. Nella finestra di dialogo Aggiungi elemento selezionare il tipo di file del linguaggio DSL.

    Il file del modello viene aperto come diagramma vuoto.

    La casella degli strumenti si apre e visualizza gli strumenti appropriati per il tipo di diagramma.

  4. Usare gli strumenti per creare forme e connettori nel diagramma.

    1. Per creare forme, trascinare dallo strumento Forma di esempio nel diagramma.

    2. Per connettere due forme, fare clic sullo strumento Connettore di esempio, fare clic sulla prima forma e quindi fare clic sulla seconda forma.

  5. Fare clic sulle etichette delle forme per modificarle.

Visual Studio sperimentale sarà simile all'esempio seguente:

Albero di esempio di linguaggio specifico del dominio in Visual Studio

Contenuto di un modello

Il contenuto di un file che è un'istanza di un linguaggio DSL è denominato modello. Il modello contiene elementi del modello e collegamenti tra gli elementi. La definizione DSL specifica quali tipi di elementi del modello e collegamenti possono esistere nel modello. Ad esempio, in un linguaggio DSL creato dal modello Linguaggio minimo è presente un tipo di elemento del modello e un tipo di collegamento.

La definizione DSL può specificare la modalità di visualizzazione del modello in un diagramma. È possibile scegliere tra diversi stili di forme e connettori. È possibile specificare che alcune forme vengano visualizzate all'interno di altre forme.

È possibile visualizzare un modello come albero nella visualizzazione Explorer durante la modifica di un modello. Quando si aggiungono forme al diagramma, gli elementi del modello vengono visualizzati anche nello strumento di esplorazione. Lo strumento di esplorazione può essere usato anche se non è presente alcun diagramma.

Se non è possibile visualizzare Esplora risorse nell'istanza di debug di Visual Studio, scegliere Altre finestre dal menu Visualizza e quindi fare clic su< Esplora lingue>.

API del linguaggio DSL

Il linguaggio DSL genera un'API che consente di leggere e aggiornare i modelli che sono istanze del linguaggio DSL. Un'applicazione dell'API consiste nel generare file di testo da un modello. Per altre informazioni, vedere Generazione di codice in fase di progettazione tramite modelli di testo T4.

Nella soluzione debug aprire i file modello con estensione ".tt". Questi esempi illustrano come generare testo dai modelli e consentono di testare l'API del linguaggio DSL. Uno degli esempi è scritto in Visual Basic, l'altro in Visual C#.

In ogni file modello è il file generato. Espandere il file modello in Esplora soluzioni e aprire il file generato.

Il file modello contiene un breve segmento di codice che elenca tutti gli elementi nel modello.

Il file generato contiene il risultato.

Quando si modifica un file di modello, verranno visualizzate le modifiche corrispondenti nei file generati dopo la rigenerazione dei file.

Per rigenerare i file di testo dopo aver modificato il file del modello

  1. Nell'istanza sperimentale di Visual Studio salvare il file del modello.

  2. Assicurarsi che il parametro del nome file in ogni file con estensione tt faccia riferimento al file di modello usato per gli esperimenti. Salvare il file con estensione tt.

  3. Fare clic su Trasforma tutti i modelli nella barra degli strumenti di Esplora soluzioni.

    o

    Fare clic con il pulsante destro del mouse sui modelli da rigenerare e quindi scegliere Esegui strumento personalizzato.

È possibile aggiungere un numero qualsiasi di file di modello di testo a un progetto. Ogni modello genera un file di risultati.

Nota

Quando si modifica la definizione DSL, il codice del modello di testo di esempio non funzionerà, a meno che non venga aggiornato.

Per altre informazioni, vedere Generazione di codice da un linguaggio specifico del dominio e scrittura di codice per personalizzare un linguaggio specifico del dominio.

Personalizzazione del linguaggio DSL

Quando si vuole modificare la definizione DSL, chiudere l'istanza sperimentale e aggiornare la definizione nell'istanza principale di Visual Studio.

Nota

Dopo aver modificato la definizione DSL, è possibile che si perdano informazioni nei modelli di test creati usando le versioni precedenti. Ad esempio, la soluzione di debug contiene un file denominato Sample, che contiene alcune forme e connettori. Dopo aver iniziato a sviluppare la definizione DSL, non saranno visibili e andranno persi quando si salva il file.

È possibile creare un'ampia gamma di estensioni per il linguaggio DSL. Gli esempi seguenti ti daranno un'impressione delle possibilità.

Dopo ogni modifica, salvare la definizione DSL, fare clic su Trasforma tutti i modelli in Esplora soluzioni e quindi premere F5 per sperimentare il linguaggio DSL modificato.

Rinominare i tipi e gli strumenti

Rinominare le classi e le relazioni di dominio esistenti. Ad esempio, a partire da una definizione dsl creata dal modello Di linguaggio minimo, è possibile eseguire le operazioni di ridenominazione seguenti per rendere il linguaggio DSL rappresentare alberi di famiglia.

Per rinominare classi di dominio, relazioni e strumenti

  1. Nel diagramma DslDefinition rinominare ExampleModel in FamilyTreeModel, ExampleElement in Person, Targets to Parents e Sources to Children.In The DslDefinition diagram, rename ExampleModel to FamilyTreeModel, ExampleElement to Person, Targets to Parents, and Sources to Children. È possibile fare clic su ogni etichetta per modificarla.

    Diagramma delle definizioni DSL - Modello ad albero di famiglia

  2. Rinominare l'elemento e gli strumenti del connettore.

    1. Aprire la finestra di Esplora DSL facendo clic sulla scheda in Esplora soluzioni. Se non è possibile visualizzarla, scegliere Altre finestre dal menu Visualizza e quindi fare clic su Esplora DSL. Dsl Explorer è visibile solo quando il diagramma di definizione DSL è la finestra attiva.

    2. Aprire il Finestra Proprietà e posizionarlo in modo che sia possibile visualizzare esplora dsl e proprietà contemporaneamente.

    3. In Esplora DSL espandere Editor, Schede casella degli strumenti, <DSL> e quindi Strumenti.

    4. Fare clic su ExampleElement. Si tratta dell'elemento della casella degli strumenti usato per creare elementi.

    5. Nella Finestra Proprietà modificare la proprietà Name in Person.

      Si noti che anche la proprietà Caption viene modificata .

    6. Nello stesso modo, modificare il nome dello strumento ExampleConnector in ParentLink. Modificare la proprietà Caption in modo che non sia una copia della proprietà Name. Ad esempio, immettere Collegamento padre.

  3. Ricompilare il linguaggio DSL.

    1. Salvare il file di definizione DSL.

    2. Fare clic su Trasforma tutti i modelli nella barra degli strumenti di Esplora soluzioni

    3. Premere F5. Attendere che venga visualizzata l'istanza sperimentale di Visual Studio.

  4. Nella soluzione debug nell'istanza sperimentale di Visual Studio aprire un file del modello di test. Trascinare gli elementi nella casella degli strumenti. Si noti che le didascalie degli strumenti e i nomi dei tipi in Dsl Explorer sono stati modificati.

  5. Salvare il file del modello.

  6. Aprire un file con estensione tt e sostituire le occorrenze dei nomi di proprietà e di tipo precedente con i nuovi nomi.

  7. Assicurarsi che il nome file specificato nel file con estensione tt specifichi il modello di test.

  8. Salvare il file con estensione tt. Aprire il file generato per visualizzare il risultato dell'esecuzione del codice nel file con estensione tt. Verificare che sia corretto.

Aggiungere proprietà di dominio alle classi

Aggiungere proprietà a una classe di dominio, ad esempio per rappresentare gli anni di nascita e la morte di una persona.

Per rendere visibili le nuove proprietà nel diagramma, è necessario aggiungere elementi Decorator alla forma che visualizza l'elemento del modello. È inoltre necessario eseguire il mapping delle proprietà agli elementi decorator.

Per aggiungere proprietà e visualizzarle
  1. Aggiungere le proprietà.

    1. Nel diagramma definizione DSL fare clic con il pulsante destro del mouse sulla classe di dominio Person , scegliere Aggiungi e quindi fare clic su Proprietà dominio.

    2. Digitare un elenco di nuovi nomi di proprietà, ad esempio Nascita e Morte. Premere INVIO dopo ognuno di essi.

  2. Aggiungere elementi decoratori che visualizzeranno le proprietà nella forma.

    1. Seguire la linea grigia che si estende dalla classe di dominio Person all'altro lato del diagramma. Si tratta di una mappa degli elementi diagramma. Collega la classe di dominio a una classe shape.

    2. Fare clic con il pulsante destro del mouse su questa classe di forma, scegliere Aggiungi, quindi fare clic su Decorator di testo.

    3. Aggiungere due decorator con nomi come BirthDecorator e DeathDecorator.

    4. Selezionare ogni nuovo elemento Decorator e nella Finestra Proprietà impostare il campo Posizione. Determina la posizione in cui verrà visualizzato il valore della proprietà di dominio nella forma. Ad esempio, impostare InnerBottomLeft e InnerBottomRight.

      Definizione della forma Raggruppamento

  3. Eseguire il mapping degli elementi decorator alle proprietà.

    1. Aprire la finestra Dettagli DSL. Si trova in genere in una scheda accanto alla finestra Output. Se non è possibile visualizzarla, scegliere Altre finestre dal menu Visualizza e quindi fare clic su Dettagli DSL.

    2. Nel diagramma delle definizioni DSL fare clic sulla riga che connette la classe di dominio Person alla classe shape.

    3. In Dettagli DSL, nella scheda Mappe Decorator fare clic sulla casella di controllo su un decorator non mappato. In Proprietà di visualizzazione selezionare la proprietà di dominio a cui eseguire il mapping. Ad esempio, eseguire il mapping BirthDecorator alla nascita.

  4. Salvare il linguaggio DSL, fare clic su Trasforma tutti i modelli e premere F5.

  5. In un diagramma di modello di esempio verificare che sia ora possibile fare clic sulle posizioni scelte e digitare i valori in essi contenuti. Inoltre, quando si seleziona una forma Persona, il Finestra Proprietà visualizza le nuove proprietà Nascita e Morte.

  6. In un file con estensione tt è possibile aggiungere codice che ottiene le proprietà di ogni persona.

    Diagramma, casella degli strumenti e finestra di esplorazione dell'albero genealogico

Definire nuove classi

È possibile aggiungere classi di dominio e relazioni a un modello. Ad esempio, è possibile creare una nuova classe per rappresentare le città e una nuova relazione per rappresentare che una persona viveva in una città.

Per fare in modo che i diversi tipi siano distinti in un diagramma modello, è possibile eseguire il mapping delle classi di dominio a diversi tipi di forma o a forme con geometria e colori diversi.

Per aggiungere e visualizzare una nuova classe di dominio
  1. Aggiungere una classe di dominio e impostarla come figlio della radice del modello.

    1. Nel diagramma di definizione DSL fare clic sullo strumento Incorpora relazione, fare clic sulla classe radice FamilyTreeModel e quindi su una parte vuota del diagramma.

      Viene visualizzata una nuova classe di dominio connessa a FamilyTreeModel con una relazione di incorporamento.

      Impostarne il nome, ad esempio Town.

      Nota

      Ogni classe di dominio ad eccezione della radice del modello deve essere la destinazione di almeno una relazione di incorporamento oppure deve ereditare da una classe che è la destinazione di un incorporamento. Per questo motivo, è spesso utile creare una classe di dominio usando lo strumento Di incorporamento relazione.

    2. Aggiungere una proprietà di dominio alla nuova classe, ad esempio Name.

  2. Aggiungere una relazione di riferimento tra Person e Town.

    1. Fare clic sullo strumento Relazione di riferimento, fare clic su Persona e quindi su Città.

      Frammento della definizione DSL: radice dell'albero genealogico

      Nota

      Le relazioni di riferimento rappresentano riferimenti incrociati da una parte dell'albero del modello a un'altra.

  3. Aggiungere una forma per rappresentare le città nei diagrammi del modello.

    1. Trascinare una forma Geometry dalla casella degli strumenti al diagramma e rinominarla, ad esempio TownShape.

    2. Nella Finestra Proprietà impostare i campi Aspetto della nuova forma, ad esempio Colore riempimento e Geometria.

    3. Aggiungere un Elemento Decorator per visualizzare il nome della città e rinominarlo NameDecorator. Impostarne la proprietà Position.

  4. Eseguire il mapping della classe di dominio Town a TownShape.

    1. Fare clic sullo strumento Diagramma mappa elementi, quindi fare clic sulla classe di dominio Town e quindi sulla classe di forma TownShape.

    2. Nella scheda Mappe Decorator della finestra Dettagli DSL con il connettore mappa selezionato selezionare NameDecorator e impostare Display Property (Proprietà di visualizzazione) su Name (Nome).

  5. Creare un connettore per visualizzare la relazione tra Person e Towns.

    1. Trascinare un connettore dalla casella degli strumenti al diagramma. Rinominarlo e impostarne le proprietà di aspetto.

    2. Usare lo strumento Diagramma mappa elementi per collegare il nuovo connettore alla relazione tra Person e Town.

      Definizione dell'albero genealogico con mappa di forme aggiunte

  6. Creare uno strumento elemento per creare una nuova città.

    1. In Esplora DSL espandere Editor e quindi Schede casella degli strumenti.

    2. Fare clic con il pulsante destro del mouse sul <linguaggio DSL> e quindi scegliere Aggiungi nuovo strumento elemento.

    3. Impostare la proprietà Name del nuovo strumento e impostarne la proprietà Class su Town.

    4. Impostare la proprietà Icona casella degli strumenti. Fare clic su [...] e nel campo Nome file selezionare un file icona.

  7. Creare uno strumento connettore per creare un collegamento tra città e persone.

    1. Fare clic con il pulsante destro del mouse sul <linguaggio DSL> e quindi scegliere Aggiungi nuovo strumento connettore.

    2. Impostare la proprietà Name del nuovo strumento.

    3. Nella proprietà ConnectionBuilder selezionare il generatore che contiene il nome della relazione Person-Town.

    4. Impostare l'icona della casella degli strumenti.

  8. Salvare la definizione DSL, fare clic su Trasforma tutti i modelli e quindi premere F5.

  9. Nell'istanza sperimentale di Visual Studio aprire un file del modello di test. Utilizzare i nuovi strumenti per creare città e collegamenti tra città e persone. Si noti che è possibile creare collegamenti solo tra i tipi di elemento corretti.

  10. Crea codice che elenca la città in cui vive ogni persona. I modelli di testo sono una delle posizioni in cui è possibile eseguire tale codice. Ad esempio, è possibile modificare il file di Sample.tt esistente nella soluzione debug in modo che contenga il codice seguente:

    <#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" debug="true" #>
    <#@ output extension=".txt" #>
    <#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Sample.ftree'" #>
    
    <#
      foreach (Person person in this.FamilyTreeModel.People)
      {
    #>
        <#= person.Name #><#if (person.Town != null) {#> of <#= person.Town.Name #> <#}#>
    
    <#
          foreach (Person child in person.Children)
      {
    #>
                <#= child.Name #>
    <#
      }
      }
    #>
    
    

    Quando si salva il file *.tt, verrà creato un file sussidiario che contiene l'elenco di persone e le loro residenze. Per altre informazioni, vedere Generazione di codice da un linguaggio specifico del dominio.

Convalida e comandi

È possibile sviluppare ulteriormente questo linguaggio DSL aggiungendo vincoli di convalida. Questi vincoli sono metodi che è possibile definire, che assicurano che il modello sia in uno stato corretto. Ad esempio, è possibile definire un vincolo per assicurarsi che la data di nascita di un bambino sia successiva a quella dei genitori. La funzionalità di convalida visualizza un avviso se l'utente DSL tenta di salvare un modello che interrompe uno dei vincoli. Per altre informazioni, vedere Convalida in un linguaggio specifico del dominio.

È anche possibile definire i comandi di menu che l'utente può richiamare. I comandi possono modificare il modello. Possono anche interagire con altri modelli in Visual Studio e con risorse esterne. Per altre informazioni, vedere Procedura: Modificare un comando di menu standard.

Distribuzione del linguaggio DSL

Per consentire ad altri utenti di usare il linguaggio specifico del dominio, distribuire un file di estensione di Visual Studio (VSIX). Questo viene creato quando si compila la soluzione DSL.

Individuare il file vsix nella cartella bin della soluzione. Copiarlo nel computer in cui si desidera installarlo. Nel computer fare doppio clic sul file VSIX. Il linguaggio DSL può essere usato in tutte le istanze di Visual Studio in tale computer.

È possibile usare la stessa procedura per installare il linguaggio DSL nel proprio computer in modo che non sia necessario usare l'istanza sperimentale di Visual Studio.

Per altre informazioni, vedere Distribuzione di soluzioni per un linguaggio specifico di dominio.

Rimozione di DSLS sperimentali precedenti

Se sono stati creati DSLS sperimentali che non si desidera più, è possibile rimuoverli dal computer reimpostando l'istanza sperimentale di Visual Studio.

Questo rimuoverà dal computer tutte le DSL sperimentali e altre estensioni sperimentali di Visual Studio. Si tratta di estensioni eseguite in modalità di debug.

Questa procedura non rimuove i DSLS o altre estensioni di Visual Studio installate completamente eseguendo il file VSIX.

Per reimpostare l'istanza sperimentale di Visual Studio

  1. Nel menu Start di Windows digitare reimpostare Visual Studio e quindi eseguire il comando Reimposta istanza sperimentale di Microsoft Visual Studio corrispondente alla versione di Visual Studio.

  2. Ricompilare eventuali DSLS sperimentali o altre estensioni sperimentali di Visual Studio che si vogliono comunque usare.