Dela via


ImageOptimizer – Uppdatera ett Visual Studio-tillägg steg för steg

Den här guiden visar alla steg som krävs för att lägga till Visual Studio 2022-stöd samtidigt som Visual Studio 2019-stöd bibehålls med hjälp av imageoptimerartillägget som en fallstudie.
Detta är tänkt att vara en grundlig guide med git-incheckningslänkar till varje steg, men du kan se den färdiga PR:en här: https://github.com/madskristensen/ImageOptimizer/pull/46.

Vi har också ytterligare exempel i slutet av den här guiden.

Steg 1 – Modernisera projektet

Se Modernisera projektet.

git commit e052465

Först höjer vi VSIX- och enhetstestprojektet till .NET 4.7.2 på egenskapssidan i projekten.

Framework-versionsökning

Image Optimizer refererade till några gamla anpassade 14.* och 15.* paket, i stället installerar vi Microsoft.VisualStudio.Sdk NuGet-paketet som konsoliderar alla våra nödvändiga referenser.

-  <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>

Projektbygget lyckas och vi får några trådningsvarningar. Vi åtgärdar dessa varningar genom att klicka på ctrl och . och använda intellisense för att lägga till de saknade trådväxlingslinjerna.

Steg 2 – Omstrukturera källkoden till ett delat projekt

Se Delade projekt.

Stöd för Visual Studio 2022 kräver att du lägger till ett nytt delat projekt som innehåller tilläggets källkod som delas mellan Visual Studio 2019- och Visual Studio 2022 VSIX-projekten.

  1. Lägga till ett nytt delat projekt i din lösning

    git commit abf249d

    Lägg till delat projekt

  2. Lägg till en referens till det delade projektet i ditt VSIX-projekt.

    git commit e8e941e

    Lägg till referens för delat projekt

  3. Flytta källkodsfilerna (cs, xaml, resx) till det nya delade projektet förutom för följande:

    • source.extension.vsixmanifest
    • Tilläggsmetadatafiler (ikoner, licenser, viktig information osv.)
    • VSCT-filer
    • Länkade filer
    • Externa verktyg eller bibliotek som måste ingå i VSIX

    git commit f31f051

    Flytta filer till delade projekt

  4. Flytta nu alla metadata, VSCT-filer, länkade filer och externa verktyg/bibliotek till en delad plats och lägg till dem som länkade objekt i VSIX-projektet. Ta inte bort source.extension.vsixmanifest .

    git commit 73ba920 – Flytta filer

    git commit d5e36b2 – Lägga till externa verktyg/bibliotek

    1. För det här projektet måste vi flytta tilläggsikonen, VSCT-filen och externa verktyg till vår nya mapp ImageOptimizer\Resources. Kopiera dem till den delade mappen och ta bort dem från VSIX-projektet.
    2. De har lagts tillbaka som länkade objekt och om objekt redan är länkade kan de förbli som de är (till exempel licens).
    3. Kontrollera att build-åtgärden och andra egenskaper har angetts korrekt i de tillagda länkade filerna genom att välja var och en och kontrollera fönstret för egenskapsverktyget. För vårt projekt var vi tvungna att ange följande:
      • Ange icon.png byggåtgärd till Content och markera Inkludera i VSIX till true

      • Ställ in ImageOptimizer.vsct kompileringsåtgärd på VSCTComplile och Inkludera i VSIX som false

      • Ställ in alla byggåtgärder för filerna under Resources\Tools till Content och markera 'Inkludera i VSIX' till true

        Lägg till länkade filer i VSIX-projekt

      • Dessutom är ImageOptimizer.cs beroende av ImageOptimizer.vsct, för detta måste vi lägga till det här beroendet manuellt i csproj-filen:

        - <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>
        
      • Om egenskapsverktygets fönster hindrar dig från att ange en specifik byggåtgärd kan du manuellt ändra csproj enligt ovan och ange byggåtgärden efter behov.

  5. Skapa projektet för att verifiera dina ändringar och åtgärda eventuella fel/problem. Kolla avsnittet vanliga frågor och svar för vanliga problem.

Steg 3 – Lägga till ett Visual Studio 2022 VSIX-projekt

Se Lägg till Visual Studio 2022-mål.

  1. Lägg till ett nytt VSIX-projekt i din lösning.

  2. Ta bort eventuell ytterligare källkod i det nya projektet förutom source.extension.vsixmanifest.

    Skapa ett nytt VSIX-projekt

  3. Lägg till en referens till ditt delade projekt.

    git commit dd49cb2

    Lägg till referens till delat projekt

  4. Lägg till de länkade filerna från ditt Visual Studio 2019 VSIX-projekt och verifiera att deras egenskaper "Build Action" och "Include in VSIX" matchar. Kopiera även över din source.extension.vsixmanifest fil, vi kommer att ändra den senare för att stödja Visual Studio 2022.

    git commit 98c43ee

    Lägg till länkade filer i VSIX-projekt

  5. Ett byggförsök visar att vi saknar en referens till System.Windows.Forms. Lägg bara till det i vårt Visual Studio 2022-projekt och återskapa det.

    git commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Uppgradera Microsoft.VisualStudio.SDK och Microsoft.VSSDK.BuildTools paketreferenser till Visual Studio 2022-versionerna.

    git commit d581fc3

    Not

    Det här är de senaste versionerna som är tillgängliga när den här guiden skapades. Vi rekommenderar att du får de senaste tillgängliga versionerna.

    -<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. Redigera din source.extension.vsixmanifest-fil för att återspegla Visual Studio 2022.

    git commit 9d393c7

    1. Ange taggen <InstallationTarget> så att den återspeglar Visual Studio 2022 och anger en amd64-nyttolast:

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. Ändra förutsättningen så att endast Visual Studio 2022 och senare inkluderas:

      - <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" />
      

Och vi är klara!

Med detta skapar byggnaden nu både Visual Studio 2019 och Visual Studio 2022 VSIXes.

Andra exempel

  • ProPower Tools
    • PeekF1
      • Tillåter att du tittar i en webbläsare med hjälpinformation om den valda klassen/objektet.
    • FixMixedTabs
      • Söker igenom dina dokument och ersätter flikar med blanksteg eller vice versa

Nästa steg

Förbered dig på att uppdatera tillägget genom att läsa den här från-början-till-slut-guiden.