Udostępnij za pośrednictwem


ImageOptimizer — aktualizowanie rozszerzenia programu Visual Studio krok po kroku

W tym przewodniku przedstawiono wszystkie kroki wymagane do dodania obsługi programu Visual Studio 2022 przy zachowaniu obsługi programu Visual Studio 2019 przy użyciu rozszerzenia Optymalizator obrazów w ramach analizy przypadku.
Ma to być dokładny przewodnik z linkami do każdego zatwierdzenia w git, ale możesz zobaczyć ostateczne Pull Request tutaj: https://github.com/madskristensen/ImageOptimizer/pull/46.

Na końcu tego przewodnika mamy również dodatkowe przykłady.

Krok 1. Modernizacja projektu

Zobacz Modernizacja projektu.

git commit e052465

Najpierw zaktualizujmy projekty VSIX i testów jednostkowych do platformy .NET 4.7.2 na stronie właściwości projektów.

Aktualizacja wersji frameworka

Optymalizator obrazów odwołuje się do niektórych starych pakietów niestandardowych 14.* i 15.* zamiast tego zainstalujemy Microsoft.VisualStudio.Sdk pakiet NuGet, który konsoliduje wszystkie wymagane odwołania.

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

Kompilowanie projektu zakończy się pomyślnie i otrzymamy kilka ostrzeżeń wątkowych. Naprawiamy te ostrzeżenia, klikając ctrl i . oraz używając funkcji IntelliSense, aby dodać brakujące linie przełączania wątków.

Krok 2. Refaktoryzacja kodu źródłowego w udostępnionym projekcie

Zobacz Udostępnione projekty.

Obsługa programu Visual Studio 2022 wymaga dodania nowego udostępnionego projektu zawierającego kod źródłowy rozszerzenia, który zostanie udostępniony między projektami visual Studio 2019 i Visual Studio 2022 VSIX.

  1. Dodawanie nowego udostępnionego projektu do rozwiązania

    zatwierdzenia git abf249d

    Dodawanie udostępnionego projektu

  2. Dodaj odwołanie do udostępnionego projektu do projektu VSIX.

    git commit e8e941e

    Dodawanie odwołania do udostępnionego projektu

  3. Przenieś pliki kodu źródłowego (cs, xaml, resx) do nowego udostępnionego projektu z wyjątkiem dla następujących elementów:

    • source.extension.vsixmanifest
    • Pliki metadanych rozszerzenia (ikony, licencje, informacje o wersji itp.)
    • Pliki VSCT
    • Połączone pliki
    • Narzędzia zewnętrzne lub biblioteki, które należy uwzględnić w vsIX

    git commit f31f051

    Przenieś pliki do udostępnionego projektu

  4. Teraz przenieś wszystkie metadane, pliki VSCT, połączone pliki i zewnętrzne narzędzia/biblioteki do udostępnionej lokalizacji i dodaj je z powrotem jako połączone elementy do projektu VSIX. Nie usuwać source.extension.vsixmanifest.

    git commit 73ba920 — Przenoszenie Plików

    git commit d5e36b2: dodawanie zewnętrznych narzędzi/bibliotek

    1. W tym projekcie musimy przenieść ikonę rozszerzenia, plik VSCT i narzędzia zewnętrzne do naszego nowego folderu ImageOptimizer\Resources. Skopiuj je do folderu udostępnionego i usuń je z projektu VSIX.
    2. Dodano je z powrotem jako połączone elementy, a jeśli pozycje są już połączone, mogą pozostać takie same (dla przykładu licencja).
    3. Sprawdź, czy akcja kompilacji i inne właściwości są poprawnie ustawione w dodanych połączonych plikach, wybierając każdy z nich i sprawdzając okno narzędzia właściwości. Dla naszego projektu musieliśmy ustawić następujące ustawienia:
      • Ustaw akcję kompilacji icon.png na Content i oznaczono Uwzględnij w VSIX na true

      • Ustaw akcję kompilacji ImageOptimizer.vsct na VSCTComplile i uwzględnij w VSIX false.

      • Ustaw akcję kompilacji wszystkich plików w Resources\Tools na Content i zaznaczono opcję Uwzględnij w VSIX, aby true

        Dodawanie połączonych plików do projektu VSIX

      • Ponadto ImageOptimizer.cs jest zależnością ImageOptimizer.vsct, dlatego musimy ręcznie dodać tę zależność do pliku 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>
        
      • Jeśli okno narzędzia właściwości uniemożliwia ustawienie konkretnej akcji kompilacji, możesz ręcznie zmodyfikować plik csproj zgodnie z powyższymi instrukcjami i ustawić akcję kompilacji zgodnie z potrzebami.

  5. Skompiluj projekt, aby zweryfikować zmiany i rozwiązać wszelkie błędy/problemy. Zapoznaj się z sekcją Często zadawane pytania, aby zapoznać się z typowymi problemami.

Krok 3. Dodawanie projektu VSIX programu Visual Studio 2022

Zobacz Dodaj Visual Studio 2022 jako cel.

  1. Dodaj nowy projekt VSIX do rozwiązania.

  2. Usuń dodatkowy kod źródłowy w nowym projekcie z wyjątkiem source.extension.vsixmanifest.

    Tworzenie nowego projektu VSIX

  3. Dodaj odwołanie do udostępnionego projektu.

    git commit dd49cb2

    Dodaj odwołanie do udostępnionego projektu

  4. Dodaj połączone pliki z projektu VSIX programu Visual Studio 2019 i sprawdź, czy ich właściwości "Build Action" i "Include in VSIX" są zgodne. Skopiuj również plik source.extension.vsixmanifest, a następnie zmodyfikujemy go w celu obsługi programu Visual Studio 2022.

    git commit 98c43ee

    dodawanie połączonych plików do projektu VSIX

  5. Próba kompilacji pokazuje, że brakuje odwołania do System.Windows.Forms. Wystarczy dodać go do naszego projektu programu Visual Studio 2022 i ponownie skompilować.

    git commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Uaktualnij odwołania do pakietu Microsoft.VisualStudio.SDK i Microsoft.VSSDK.BuildTools do wersji programu Visual Studio 2022.

    git commit d581fc3

    Notatka

    Są to najnowsze wersje dostępne podczas tworzenia tego przewodnika. Zaleca się uzyskanie najnowszych dostępnych wersji.

    -<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. Edytuj plik source.extension.vsixmanifest, aby odzwierciedlić docelową wersję programu Visual Studio 2022.

    git commit 9d393c7

    1. Ustaw tag <InstallationTarget>, aby odzwierciedlić program Visual Studio 2022 i wskazać ładunek amd64:

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. Zmodyfikuj wymagania wstępne, aby uwzględnić tylko program Visual Studio 2022 lub nowszy:

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

I skończone!

Dzięki temu kompilacja tworzy teraz zarówno Visual Studio 2019, jak i Visual Studio 2022 pliki VSIX.

Inne przykłady

  • ProPower Tools
    • PeekF1
      • Umożliwia podgląd w przeglądarce internetowej z informacjami pomocniczymi o wybranej klasie/obiekcie.
    • Naprawianie mieszanych tabulatorów
      • Skanuje dokumenty i zastępuje tabulatory spacjami lub odwrotnie

Następne kroki

Przygotuj się do zaktualizowania rozszerzenia, czytając ten przewodnik start-to-finish.