Condividi tramite


ImageOptimizer - Aggiornare un'estensione di Visual Studio in modo dettagliato

Questa guida illustra tutti i passaggi necessari per l'aggiunta del supporto di Visual Studio 2022 mantenendo il supporto di Visual Studio 2019 usando l'estensione Image Optimizer come case study.
Si tratta di una guida completa con i collegamenti ai commit di git per ogni passaggio, ma puoi visualizzare la pull request completata qui: https://github.com/madskristensen/ImageOptimizer/pull/46.

Alla fine di questa guida sono disponibili anche esempi aggiuntivi.

Passaggio 1 - Modernizzare il progetto

Vedi Modernizzare il progetto.

git commit e052465

Prima di tutto, il progetto VSIX e unit test viene spostato su .NET 4.7.2 nella pagina delle proprietà dei progetti:

Framework aggiornamento della versione

Image Optimizer ha fatto riferimento ad alcuni vecchi pacchetti personalizzati 14.* e 15.*; invece, installeremo il pacchetto NuGet Microsoft.VisualStudio.Sdk, che consolida tutti i riferimenti necessari.

-  <ItemGroup>
-    <PackageReference Include="Madskristensen.VisualStudio.SDK">
-      <Version>14.0.0-beta4</Version>
-    </PackageReference>
-    <PackageReference Include="Microsoft.VSSDK.BuildTools">
-      <Version>15.8.3247</Version>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
-      <PrivateAssets>all</PrivateAssets>
-    </PackageReference>
-  </ItemGroup>

+  <ItemGroup>
+    <PackageReference Include="Microsoft.VisualStudio.SDK">
+      <Version>16.9.31025.194</Version>
+    </PackageReference>
+  </ItemGroup>

La compilazione del progetto ha esito positivo e vengono visualizzati alcuni avvisi relativi al threading. Questi avvisi vengono corretti facendo clic su ctrl e . e usando intelliSense per aggiungere le righe di cambio di thread mancanti.

Passaggio 2: Eseguire il refactoring del codice sorgente in un progetto condiviso

Visualizza Progetti condivisi.

Per supportare Visual Studio 2022 è necessario aggiungere un nuovo progetto condiviso che conterrà il codice sorgente dell'estensione che verrà condiviso tra i progetti VSIX di Visual Studio 2019 e Visual Studio 2022.

  1. Aggiungere un nuovo progetto condiviso alla soluzione

    commit git abf249d

    Aggiungi progetto condiviso

  2. Aggiungere un riferimento al progetto condiviso al progetto VSIX.

    git commit e8e941e

    Aggiungere riferimento al progetto condiviso

  3. Spostare i file di codice sorgente (cs, xaml, resx) nel nuovo progetto condiviso tranne per quanto segue:

    • source.extension.vsixmanifest
    • File di metadati di estensione (icone, licenze, note sulla versione e così via)
    • File VSCT
    • File collegati
    • Strumenti o librerie esterni che devono essere inclusi in VSIX

    git commit f31f051

    Spostare file in un progetto condiviso

  4. Ora, sposta tutti i metadati, i file VSCT, i file collegati e le librerie/strumenti esterni in un percorso condiviso e aggiungili nuovamente come elementi collegati al progetto VSIX. Non rimuovere source.extension.vsixmanifest.

    git commit 73ba920 - Spostamento di file

    git commit d5e36b2 - Aggiunta di strumenti/librerie esterni

    1. Per questo progetto è necessario spostare l'icona dell'estensione, il file VSCT e gli strumenti esterni nella nuova cartella ImageOptimizer\Resources. Copiarli nella cartella condivisa e rimuoverli dal progetto VSIX.
    2. Aggiunti di nuovo come elementi collegati e se gli elementi sono già elementi collegati possono rimanere così come sono (ad esempio, licenza).
    3. Verificare che l'azione di compilazione e altre proprietà siano impostate correttamente nei file collegati aggiunti selezionando ognuno e controllando la finestra degli strumenti delle proprietà. Per il progetto è stato necessario impostare quanto segue:
      • Impostare icon.png Azione di compilazione su Content e includere in VSIX su true

      • Imposta ImageOptimizer.vsct come Azione di compilazione su VSCTComplile e includi in VSIX su false

      • Impostare tutte le Azioni di Compilazione dei file in Resources\Tools su Content e contrassegnare 'Includi nel VSIX' su true

        Aggiungere file collegati al progetto VSIX

      • Inoltre, ImageOptimizer.cs è una dipendenza di ImageOptimizer.vsct, per questo è necessario aggiungere manualmente questa dipendenza al file csproj:

        - <Content Include="..\SharedFiles\ImageOptimizer.vsct">
        -   <Link>ImageOptimizer.vsct</Link>
        - </Content>
        - <Compile Include="..\SharedFiles\ImageOptimizer.cs">
        -   <Link>ImageOptimizer.cs</Link>
        - </Compile>
        
        + <VSCTCompile Include="..\SharedFiles\ImageOptimizer.vsct">
        +   <ResourceName>Menus.ctmenu</ResourceName>
        +   <Generator>VsctGenerator</Generator>
        +   <LastGenOutput>..\SharedFiles\ImageOptimizer.cs</LastGenOutput>
        + </VSCTCompile>
        + <Compile Include="..\SharedFiles\ImageOptimizer.cs">
        +   <AutoGen>True</AutoGen>
        +   <DesignTime>True</DesignTime>
        +   <DependentUpon>..\SharedFiles\ImageOptimizer.vsct</DependentUpon>
        + </Compile>
        
      • Se la finestra degli strumenti delle proprietà impedisce di impostare un'azione di compilazione specifica, è possibile modificare manualmente il file csproj come fatto in precedenza e impostare l'azione di compilazione in base alle esigenze.

  5. Compilare il progetto per convalidare le modifiche e correggere eventuali errori/problemi. Per informazioni sui problemi comuni, vedere la sezione domande frequenti.

Passaggio 3- Aggiungere un progetto VSIX di Visual Studio 2022

Fare riferimento a Aggiungere il target di Visual Studio 2022.

  1. Aggiungere un nuovo progetto VSIX alla soluzione.

  2. Rimuovere qualsiasi codice sorgente aggiuntivo nel nuovo progetto, ad eccezione di source.extension.vsixmanifest.

    Creare un nuovo progetto VSIX

  3. Aggiungere un riferimento al progetto condiviso.

    git commit dd49cb2

    Aggiungi riferimento al progetto condiviso

  4. Aggiungere i file collegati dal progetto VSIX di Visual Studio 2019 e verificare che le proprietà "Azione di compilazione" e "Includi in VSIX" corrispondano. Copiare anche il file source.extension.vsixmanifest, che verrà modificato in un secondo momento per supportare Visual Studio 2022.

    git commit 98c43ee

    Aggiungere file collegati al progetto VSIX

  5. Un tentativo di compilazione mostra che manca un riferimento a System.Windows.Forms. È sufficiente aggiungerlo al nostro progetto di Visual Studio 2022 e ricompilarlo.

    git commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Aggiorna i riferimenti ai pacchetti Microsoft.VisualStudio.SDK e Microsoft.VSSDK.BuildTools alle versioni Visual Studio 2022.

    git commit d581fc3

    Nota

    Queste sono le versioni più recenti disponibili al momento della creazione di questa guida. È consigliabile ottenere le versioni più recenti disponibili.

    -<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" />
    +<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0.0-preview-1-31216-1036" />
    -<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.10.32" />
    +<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.63-Visual Studio 2022-g3f11f5ab" />
    
  7. Modificare il file source.extension.vsixmanifest in modo da riflettere la destinazione di Visual Studio 2022.

    git commit 9d393c7

    1. Impostare il tag <InstallationTarget> per indicare Visual Studio 2022 e segnalare un payload amd64.

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. Modificare il prerequisito per includere solo Visual Studio 2022 e versioni successive:

      - <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,)" DisplayName="Visual Studio core editor" />
      + <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[17.0,)" DisplayName="Visual Studio core editor" />
      

E abbiamo finito!

Con questo, la compilazione produce sia Visual Studio 2019 che Visual Studio 2022 VSIXes.

Altri esempi

  • ProPower Tools
    • VisualizzaF1
      • Consente di visualizzare in un Web browser informazioni sulla classe/oggetto selezionato.
    • FixMixedTabs
      • Scansiona i documenti e sostituisce le tabulazioni con spazi o viceversa

Passaggi successivi

Preparatevi ad aggiornare la vostra estensione leggendo questa guida completa.