ImageOptimizer – krok za krokem aktualizace rozšíření sady Visual Studio

Tato příručka zobrazí všechny kroky potřebné k přidání podpory sady Visual Studio 2022 při zachování podpory sady Visual Studio 2019 pomocí rozšíření Optimalizace obrázků jako případové studie.
Jedná se o důkladnou příručku s odkazy na potvrzení Gitu na jednotlivé kroky, ale můžete se zde podívat na dokončenou žádost o přijetí změn: https://github.com/madskristensen/ImageOptimizer/pull/46.

Na konci této příručky máme také další ukázky .

Krok 1 – modernizace projektu

Viz Modernizace projektu.

git commit e052465

Nejprve narazíme na projekt VSIX a testování jednotek na .NET 4.7.2 na stránce vlastností projektů:

Framework version bump

Nástroj Pro optimalizaci obrázků odkazoval na některé staré vlastní balíčky 14.* a 15.* místo toho nainstalujeme Microsoft.VisualStudio.Sdk balíček NuGet, který slučuje všechny požadované odkazy.

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

Sestavení projektu proběhne úspěšně a zobrazí se několik upozornění na podprocesy. Tato upozornění opravíme kliknutím ctrl a . použitím technologie IntelliSense přidáme chybějící řádky přepínání vláken.

Krok 2 : Refaktoring zdrojového kódu do sdíleného projektu

Viz Sdílené projekty.

Podpora sady Visual Studio 2022 vyžaduje přidání nového sdíleného projektu, který bude obsahovat zdrojový kód rozšíření, který se bude sdílet mezi projekty Visual Studio 2019 a Visual Studio 2022 VSIX.

  1. Přidání nového sdíleného projektu do řešení

    git commit abf249d

    Add shared project

  2. Přidejte do projektu VSIX odkaz na sdílený projekt.

    git commit e8e941e

    Add shared project reference

  3. Přesuňte soubory zdrojového kódu (cs, xaml, resx) do nového sdíleného projektu s výjimkou následujících:

    • source.extension.vsixmanifest
    • Soubory metadat rozšíření (ikony, licence, poznámky k verzi atd.)
    • Soubory VSCT
    • Propojené soubory
    • Externí nástroje nebo knihovny, které je potřeba zahrnout do VSIX

    git commit f31f051

    Move files to shared project

  4. Teď přesuňte všechna metadata, soubory VSCT, propojené soubory a externí nástroje/knihovny do sdíleného umístění a přidejte je zpět jako propojené položky do projektu VSIX. Neodstraňujte source.extension.vsixmanifest.

    git commit 73ba920 – Přesouvání souborů

    git commit d5e36b2 – přidání externích nástrojů/knihoven

    1. Pro tento projekt potřebujeme přesunout ikonu rozšíření, soubor VSCT a externí nástroje do nové složky ImageOptimizer\Resources. Zkopírujte je do sdílené složky a odeberte je z projektu VSIX.
    2. Přidali jste je zpátky jako propojené položky a pokud už jsou propojené položky, můžou zůstat tak, jak jsou (například licence).
    3. Ověřte, zda jsou v přidaných propojených souborech správně nastaveny akce sestavení a další vlastnosti, a to tak, že vyberete každou z nich a zkontrolujete okno nástroje vlastnosti. Pro náš projekt jsme museli nastavit následující:
      • Nastavte icon.png akci sestavení na Content možnost Zahrnout do VSIX a označte ji na true

      • Nastavení ImageOptimizer.vsct akce sestavení na VSCTComplile hodnotu a zahrnutí do VSIX na false

      • Nastavte všechny akce sestavení souborů v části Resources\Tools Zahrnout do Content VSIX a nastavte na true

        Add linked files to VSIX project

      • Kromě toho ImageOptimizer.cs je závislost ImageOptimizer.vsct, pro to musíme ručně přidat tuto závislost do souboru 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>
        
      • Pokud vám okno nástroje vlastnosti brání v nastavení konkrétní akce sestavení, můžete soubor csproj upravit ručně podle výše uvedeného postupu a podle potřeby nastavit akci sestavení.

  5. Sestavte projekt, abyste ověřili změny a opravili případné chyby nebo problémy. Běžné problémy najdete v části Nejčastější dotazy .

Krok 3 : Přidání projektu Visual Studio 2022 VSIX

Viz Přidání cíle sady Visual Studio 2022.

  1. Přidejte do svého řešení nový projekt VSIX.

  2. Odebrání dalšího zdrojového kódu v novém projektu s výjimkou source.extension.vsixmanifest.

    Create a new VSIX project

  3. Přidejte odkaz na sdílený projekt.

    git commit dd49cb2

    Add reference to shared project

  4. Přidejte propojené soubory z projektu VSIX sady Visual Studio 2019 a ověřte, že jejich vlastnosti "Akce sestavení" a "Zahrnout do VSIX" odpovídají. Soubor také zkopírujeme source.extension.vsixmanifest , později ho upravíme tak, aby podporoval Visual Studio 2022.

    git commit 98c43eee

    Add Linked files to VSIX project

  5. Pokus o sestavení ukazuje, že chybí odkaz na System.Windows.Forms. Jednoduše ho přidejte do projektu sady Visual Studio 2022 a znovu sestavte.

    git commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Upgradujte a Microsoft.VSSDK.BuildTools zabalte Microsoft.VisualStudio.SDK odkazy na verze sady Visual Studio 2022.

    git commit d581fc3

    Poznámka:

    Toto jsou nejnovější verze, které jsou k dispozici při vytváření této příručky. Doporučujeme získat nejnovější dostupné verze.

    -<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. Upravte source.extension.vsixmanifest soubor tak, aby odrážel cílení na Visual Studio 2022.

    git commit 9d393c7

    1. <InstallationTarget> Nastavte značku tak, aby odrážela Visual Studio 2022 a označte datovou část amd64:

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. Upravte požadavek tak, aby zahrnoval pouze Visual Studio 2022 a vyšší:

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

A my jsme hotovi!

Díky tomu teď sestavování vytváří visual Studio 2019 i visual Studio 2022 VSIX.

Další ukázky

  • ProPower Tools
    • PeekF1
      • Umožňuje náhled do webového prohlížeče s informacemi o vybrané třídě nebo objektu.
    • FixMixedTabs
      • Prohledá dokumenty a nahradí karty mezerami nebo naopak.

Další kroky

Připravte se na aktualizaci rozšíření v tomto úvodním průvodci.