Freigeben über


ImageOptimizer – Schrittweises Aktualisieren einer Visual Studio-Erweiterung

In diesem Handbuch werden alle Schritte zum Hinzufügen der Visual Studio 2022-Unterstützung angezeigt, während visual Studio 2019-Unterstützung mithilfe der Bildoptimierererweiterung als Fallstudie beibehalten wird.
Dieser Leitfaden enthält eine ausführliche Anleitung mit Links zu Git-Commits für jeden Schritt. Den fertiggestellten Pull Request finden Sie hier: https://github.com/madskristensen/ImageOptimizer/pull/46.

Weitere Beispiele finden Sie am Ende dieses Leitfadens.

Schritt 1 : Modernisieren des Projekts

Weitere Informationen hierzu finden Sie unter Modernisieren des Projekts.

Git-Commit e052465

Zunächst aktualisieren wir das VSIX- und das Unit-Test-Projekt auf .NET 4.7.2 in der Eigenschaftenseite der Projekte.

Framework-Versionserhöhung

Image Optimizer hat auf einige alte benutzerdefinierte 14.* und 15.* Pakete verwiesen, stattdessen installieren wir das Microsoft.VisualStudio.Sdk NuGet-Paket, das alle erforderlichen Verweise konsolidiert.

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

Das Projekt wird erfolgreich erstellt, und es werden einige Threadingwarnungen angezeigt. Wir beheben diese Warnungen durch Klicken auf ctrl und . und verwenden IntelliSense, um die fehlenden Threadumschaltungslinien hinzuzufügen.

Schritt 2: Umgestalten des Quellcodes in ein freigegebenes Projekt

Weitere Informationen hierzu finden Sie unter Freigegebene Projekte.

Die Unterstützung von Visual Studio 2022 erfordert das Hinzufügen eines neuen freigegebenen Projekts, das den Quellcode der Erweiterung enthält, der zwischen den Visual Studio 2019- und Visual Studio 2022 VSIX-Projekten gemeinsam verwendet wird.

  1. Hinzufügen eines neuen freigegebenen Projekts zu Ihrer Lösung

    Git-Commit abf249d

    Hinzufügen eines freigegebenen Projekts

  2. Fügen Sie Ihrem VSIX-Projekt einen Verweis auf das freigegebene Projekt hinzu.

    Git-Commit e8e941e

    Hinzufügen einer freigegebenen Projektreferenz

  3. Verschieben Sie Die Quellcodedateien (cs, xaml, resx) in das neue freigegebene Projekt mit Ausnahme für Folgendes:

    • source.extension.vsixmanifest
    • Erweiterungsmetadatendateien (Symbole, Lizenzen, Versionshinweise usw.)
    • VSCT-Dateien
    • Verknüpfte Dateien
    • Externe Tools oder Bibliotheken, die im VSIX enthalten sein müssen

    Git-Commit f31f051

    Dateien in das freigegebene Projekt verschieben

  4. Verschieben Sie nun alle Metadaten, VSCT-Dateien, verknüpfte Dateien und externe Tools/Bibliotheken an einen freigegebenen Speicherort, und fügen Sie sie wieder als verknüpfte Elemente zum VSIX-Projekt hinzu. Entfernen Sie nicht source.extension.vsixmanifest.

    git commit 73ba920 – Verschieben von Dateien

    git commit d5e36b2 – Hinzufügen externer Tools/Bibliotheken

    1. Für dieses Projekt müssen wir das Erweiterungssymbol, die VSCT-Datei und externe Tools in unseren neuen Ordner ImageOptimizer\Resourcesverschieben. Kopieren Sie sie in den freigegebenen Ordner, und entfernen Sie sie aus dem VSIX-Projekt.
    2. Sie werden als verknüpfte Elemente hinzugefügt, und falls Elemente bereits verknüpft sind, können sie unverändert bleiben (z. B. Lizenz).
    3. Überprüfen Sie, ob die Buildaktion und andere Eigenschaften in den hinzugefügten verknüpften Dateien ordnungsgemäß festgelegt werden, indem Sie jedes auswählen und das Eigenschaftentoolfenster überprüfen. Für unser Projekt mussten wir Folgendes festlegen:
      • Legen Sie den Buildvorgang für icon.png auf Content und die Option „In VSIX einbeziehen“ auf true fest.

      • Legen Sie den Buildvorgang für ImageOptimizer.vsct auf VSCTComplile und die Option „In VSIX einbeziehen“ auf false fest.

      • Legen Sie den Buildvorgang für alle Dateien unter Resources\Tools auf Content und die Option „In VSIX einbeziehen“ auf true fest.

        Hinzufügen verknüpfter Dateien zum VSIX-Projekt

      • Darüber hinaus ist ImageOptimizer.cs eine Abhängigkeit von ImageOptimizer.vsct, für die wir diese Abhängigkeit manuell zur csproj-Datei hinzufügen müssen:

        - <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>
        
      • Wenn das Eigenschaftentoolfenster verhindert, dass Sie eine bestimmte Buildaktion festlegen, können Sie das csproj manuell wie oben ändern und die Buildaktion bei Bedarf festlegen.

  5. Erstellen Sie Ihr Projekt, um Ihre Änderungen zu überprüfen und Fehler/Probleme zu beheben. Überprüfen Sie den Abschnitt Häufig gestellte Fragen auf häufige Probleme.

Schritt 3 : Hinzufügen eines Visual Studio 2022 VSIX-Projekts

Weitere Informationen hierzu finden Sie unter Hinzufügen eines Visual Studio 2022-Ziels.

  1. Fügen Sie Ihrer Lösung ein neues VSIX-Projekt hinzu.

  2. Entfernen Sie zusätzlichen Quellcode im neuen Projekt mit Ausnahme von source.extension.vsixmanifest.

    Erstellen eines neuen VSIX-Projekts

  3. Fügen Sie Ihrem freigegebenen Projekt einen Verweis hinzu.

    Git-Commit dd49cb2

    Hinzufügen eines Verweises auf das freigegebene Projekt

  4. Fügen Sie die verknüpften Dateien aus Ihrem Visual Studio 2019 VSIX-Projekt hinzu, und überprüfen Sie, ob die Eigenschaften "Buildaktion" und "In VSIX einschließen" übereinstimmen. Kopieren Sie auch ihre source.extension.vsixmanifest-Datei, wir ändern sie später, um Visual Studio 2022 zu unterstützen.

    Git-Commit 98c43ee

    Hinzufügen von verknüpften Dateien zum VSIX-Projekt

  5. Ein versuchter Build zeigt, dass ein Verweis auf System.Windows.Formsfehlt. Fügen Sie es einfach zu unserem Visual Studio 2022-Projekt hinzu und erstellen Sie es neu.

    Git-Commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Aktualisieren Microsoft.VisualStudio.SDK und Microsoft.VSSDK.BuildTools Paketverweise auf die Visual Studio 2022-Versionen.

    Git-Commit d581fc3

    Anmerkung

    Dies sind die neuesten Versionen, die beim Erstellen dieses Handbuchs verfügbar sind. Es wird empfohlen, die neuesten Verfügbaren Versionen zu erhalten.

    -<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. Bearbeiten Sie Ihre source.extension.vsixmanifest Datei, um die Zielbestimmung von Visual Studio 2022 widerzuspiegeln.

    Git-Commit 9d393c7

    1. Legen Sie das <InstallationTarget>-Tag so fest, dass es Visual Studio 2022 wiedergibt, und geben Sie eine amd64-Nutzlast an:

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. Ändern Sie die Voraussetzung so, dass sie nur Visual Studio 2022 und höher enthält:

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

Und wir sind fertig!

Nun werden beim Buildvorgang Visual Studio 2019- und Visual Studio 2022-VSIX-Projekte erstellt.

Weitere Beispiele

  • ProPower-Tools
    • PeekF1
      • Ermöglicht das Einblenden in einen Webbrowser mit Hilfeinformationen über die ausgewählte Klasse/das ausgewählte Objekt.
    • FixMixedTabs
      • Überprüft Ihre Dokumente und ersetzt Tabstoppzeichen durch Leerzeichen oder umgekehrt

Nächste Schritte

In diesem umfassenden Leitfaden erfahren Sie, wie Sie Ihre Erweiterung aktualisieren.