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.
Najpierw zaktualizujmy projekty VSIX i testów jednostkowych do platformy .NET 4.7.2 na stronie właściwości projektów.
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.
Dodawanie nowego udostępnionego projektu do rozwiązania
Dodaj odwołanie do udostępnionego projektu do projektu VSIX.
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
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
- 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. - Dodano je z powrotem jako połączone elementy, a jeśli pozycje są już połączone, mogą pozostać takie same (dla przykładu licencja).
- 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
naContent
i oznaczono Uwzględnij w VSIX natrue
Ustaw akcję kompilacji
ImageOptimizer.vsct
naVSCTComplile
i uwzględnij w VSIXfalse
.Ustaw akcję kompilacji wszystkich plików w
Resources\Tools
naContent
i zaznaczono opcję Uwzględnij w VSIX, abytrue
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.
- W tym projekcie musimy przenieść ikonę rozszerzenia, plik VSCT i narzędzia zewnętrzne do naszego nowego folderu
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.
Dodaj nowy projekt VSIX do rozwiązania.
Usuń dodatkowy kod źródłowy w nowym projekcie z wyjątkiem
source.extension.vsixmanifest.
Dodaj odwołanie do udostępnionego projektu.
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.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ć.+ <Reference Include="System.Windows.Forms" />
Uaktualnij odwołania do pakietu
Microsoft.VisualStudio.SDK
iMicrosoft.VSSDK.BuildTools
do wersji programu Visual Studio 2022.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" />
Edytuj plik
source.extension.vsixmanifest
, aby odzwierciedlić docelową wersję programu Visual Studio 2022.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>
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
- PeekF1
Następne kroki
Przygotuj się do zaktualizowania rozszerzenia, czytając ten przewodnik start-to-finish.