Freigeben über


Aktualisieren einer Visual Studio-Erweiterung für Visual Studio 2022

Wichtig

Die Ratschläge in diesem Artikel können Entwickler beim Migrieren von Erweiterungen unterstützen, die wichtige Änderungen an der Arbeit in Visual Studio 2019 und Visual Studio 2022 erfordern. In diesen Fällen wird empfohlen, zwei VSIX-Projekte und die bedingte Kompilierung zu verwenden.

Viele Erweiterungen funktionieren sowohl in Visual Studio 2019 als auch in Visual Studio 2022 mit geringfügigen Änderungen, ohne dass Sie den Rat zur Modernisierung Ihrer Erweiterung in diesem Artikel befolgen müssen. Probieren Sie Ihre Erweiterung in Visual Studio 2022 aus, und bewerten Sie, welche Option für Ihre Erweiterung am besten geeignet ist.

Visual Studio 2022 ist eine 64-Bit-Anwendung und führt einige bahnbrechende Änderungen im Visual Studio SDK ein. Dieser Artikel führt Sie durch die schritte, die erforderlich sind, um Ihre Erweiterung mit der aktuellen Vorschau von Visual Studio 2022 zu verwenden. Ihre Erweiterung kann dann für Benutzer bereit sein, bevor Visual Studio 2022 die allgemeine Verfügbarkeit erreicht.

Visual Studio installieren und Erweiterungen kompilieren

Installieren Sie Visual Studio 2022 über Visual Studio 2022-Downloads.

In einer .NET-Sprache geschriebene Erweiterungen

Das Visual Studio SDK, das auf Visual Studio 2022 für verwaltete Erweiterungen ausgerichtet ist, befindet sich ausschließlich auf NuGet:

  • Das Meta-Paket Microsoft.VisualStudio.Sdk (17.x-Versionen) enthält die meisten oder alle Referenzassemblys, die Sie benötigen.
  • Auf das Microsoft.VSSDK.BuildTools- -Paket (17.x-Versionen) sollte aus Ihrem VSIX-Projekt verwiesen werden, damit es ein Visual Studio 2022-kompatibles VSIX erstellen kann.

Auch wenn Sie auf keine Breaking Changes verweisen, müssen Erweiterungen mit der Plattform Beliebige CPU oder x64 kompiliert werden. Die x86--Plattform ist mit dem 64-Bit-Prozess in Visual Studio 2022 nicht kompatibel.

In C++ geschriebene Erweiterungen

Das Visual Studio SDK für Erweiterungen, die mit C++ kompiliert wurden, ist wie gewohnt mit dem installierten Visual Studio SDK verfügbar.

Auch wenn Sie auf keine wichtigen Änderungen verweisen, müssen Erweiterungen speziell für das Visual Studio 2022 SDK und für AMD64 kompiliert werden.

Erweiterungen mit ausgeführtem Code

Erweiterungen mit ausgeführtem Code müssen speziell für Visual Studio 2022 kompiliert werden. Visual Studio 2022 lädt keine Erweiterung, die auf eine frühere Version von Visual Studio ausgerichtet ist.

Erfahren Sie, wie Sie Ihre Erweiterungen für frühere Visual Studio-Versionen zu Visual Studio 2022 migrieren:

  1. Modernisieren Sie Ihre Projekte.
  2. Umgestalten Sie Ihren Quellcode in ein freigegebenes Projekt, um die Zielbestimmung von Visual Studio 2022 und älteren Versionen zu ermöglichen.
  3. Hinzufügen eines VSIX-Projekts für Visual Studio 2022 und einer Tabelle für die Neuzuordnung von Paketen/Assemblys
  4. Erforderliche Codeanpassungenvornehmen.
  5. Testen Sie die Visual Studio 2022-Erweiterung.
  6. Veröffentlichen der Visual Studio 2022-Erweiterung.

Erweiterungen ohne Ausführung von Code

Erweiterungen, die keinen ausgeführten Code enthalten (z. B. Projekt- oder Elementvorlagen), sind nicht erforderlich, um die vorherigen Schritte auszuführen, einschließlich der Produktion von zwei unterschiedlichen VSIXs.

Ändern Sie stattdessen das VSIX-Element so, dass die Datei source.extension.vsixmanifest zwei Installationsziele deklariert:

<Installation>
   <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[15.0,17.0)">
      <ProductArchitecture>x86</ProductArchitecture>
   </InstallationTarget>
   <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
      <ProductArchitecture>amd64</ProductArchitecture>
   </InstallationTarget>
</Installation>

Sie können die Schritte in diesem Artikel über die Verwendung freigegebener Projekte und mehrerer VSIXs überspringen. Sie können mit den Tests fortfahren.

Anmerkung

Wenn Sie eine neue Visual Studio-Erweiterung mithilfe von Visual Studio 2022 erstellen und dabei auch Visual Studio 2019 oder eine frühere Version unterstützen möchten, lesen Sie diesen Leitfaden.

MSBuild-Aufgaben

Wenn Sie MSBuild-Aufgaben erstellen, beachten Sie, dass es in Visual Studio 2022 wahrscheinlich ist, dass sie in einem 64-Bit-MSBuild.exe-Prozess geladen werden. Wenn für Ihre Aufgabe ein 32-Bit-Prozess ausgeführt werden muss, lesen Sie Konfigurieren von Zielen und Aufgaben, um sicherzustellen, dass MSBuild Ihre Aufgabe in einem 32-Bit-Prozess lädt.

Modernisieren Ihres VSIX-Projekts

Bevor Sie der Erweiterung Visual Studio 2022-Unterstützung hinzufügen, empfehlen wir dringend, dass Sie Ihr vorhandenes Projekt bereinigen und modernisieren:

  1. Migrieren von packages.config zu PackageReference.

  2. Ersetzen Sie alle direkten Visual Studio SDK-Assemblyverweise durch PackageReference Elemente:

    -<Reference Include="Microsoft.VisualStudio.OLE.Interop" />
    +<PackageReference Include="Microsoft.VisualStudio.OLE.Interop" Version="..." />
    

    Tipp

    Sie können viele Assemblyverweise durch nur einePackageReference-Instanz für das Metapaket ersetzen:

    -<Reference Include="Microsoft.VisualStudio.OLE.Interop" />
    -<Reference Include="Microsoft.VisualStudio.Interop" />
    -<Reference Include="Microsoft.VisualStudio.Interop.8.0" />
    +<PackageReference Include="Microsoft.VisualStudio.Sdk" Version="..." />
    

    Stellen Sie sicher, dass Sie Paketversionen auswählen, die der Mindestversion von Visual Studio entsprechen, auf die Sie abzielen.

Einige Assemblys, die nicht eindeutig dem Visual Studio SDK zugeordnet sind (z. B. Newtonsoft.Json.dll), konnten möglicherweise über einen einfachen <Reference Include="Newtonsoft.Json" />-Verweis vor Visual Studio 2022 entdeckt werden. In Visual Studio 2022 benötigen sie jedoch stattdessen einen Paketverweis. Der Grund dafür ist, dass einige Visual Studio-Runtime- und SDK-Verzeichnisse aus dem Standardmäßigen Assemblysuchpfad in MSBuild entfernt wurden.

Wenn Sie von direkten Assemblyverweise auf NuGet-Paketverweise wechseln, können Sie zusätzliche Assemblyverweise und Analysepakete aufnehmen, da NuGet automatisch das transitive Schließen von Abhängigkeiten installiert. Dies ist im Allgemeinen OK, kann aber während des Builds zu zusätzlichen Warnungen führen. Arbeiten Sie diese Warnungen durch und beheben Sie so viele wie möglich. Erwägen Sie die Verwendung von #pragma warning disable <id>-Regionen im Code, um Warnungen zu unterdrücken, die nicht aufgelöst werden können.

Verwenden Sie gemeinsame Projekte für die Mehrfachzielausrichtung

Freigegebene Projekte sind ein Projekttyp, der in Visual Studio 2015 eingeführt wurde. Freigegebene Projekte in Visual Studio ermöglichen es, dass Quellcodedateien zwischen mehreren Projekten geteilt und unterschiedlich kompiliert werden, indem bedingte Kompilierungssymbole und spezifische Referenzsätze verwendet werden.

Visual Studio 2022 erfordert einen eindeutigen Satz von Referenzassemblys aus allen früheren Visual Studio-Versionen. Daher empfehlen wir, dass Sie freigegebene Projekte verwenden, um Ihre Erweiterung bequem auf Visual Studio 2022, frühere Versionen und höhere Versionen anzuzielen. Mit dieser Technik erhalten Sie einen gemeinsamen Code, aber eindeutige Verweise.

Im Kontext von Visual Studio-Erweiterungen könnten Sie über ein VSIX-Projekt für Visual Studio 2022 und höher und ein VSIX-Projekt für Visual Studio 2019 und früher verfügen. Jedes dieser Projekte würde nur eine source.extension.vsixmanifest Instanz und die Paketverweise auf das 16.x SDK oder das 17.x SDK enthalten. Diese VSIX-Projekte verfügen auch über einen gemeinsames Projektverweis auf ein neues gemeinsames Projekt, das den gesamten Quellcode hosten wird, der in beiden Visual Studio-Versionen gemeinsam genutzt werden kann.

In diesem Abschnitt wird davon ausgegangen, dass Sie bereits über ein VSIX-Projekt verfügen, das auf Visual Studio 2019 ausgerichtet ist und die Erweiterung für Visual Studio 2022 verwendet werden soll.

Sie können alle diese Schritte ausführen, indem Sie Visual Studio 2019 verwenden:

  1. Modernisieren Sie Ihre Projekte, sofern noch nicht geschehen, um die Schritte später in diesem Updateprozess zu vereinfachen.

  2. Fügen Sie Ihrer Projektmappe für jedes vorhandene Projekt, das auf das Visual Studio SDK verweist, ein neues freigegebenes Projekt hinzu. Klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie dann Hinzufügen>Neues Projektaus.

    Screenshot, der die Auswahl zum Hinzufügen eines neuen Projekts zeigt.

  3. Im Dialogfeld Neues Projekt hinzufügen, suchen Sie nach dem freigegebenen Projektund wählen Sie dann die Vorlage Freigegebenes Projekt aus.

    Screenshot: Suchen nach und Auswählen der Vorlage „Freigegebenes Projekt“

  4. Fügen Sie jedem Projekt, das auf das Visual Studio SDK verweist, einen Verweis auf das gemeinsam genutzte Projekt hinzu.

    Screenshot mit Auswahlmöglichkeiten zum Hinzufügen eines gemeinsam genutzten Projektverweises.

  5. Verschieben Sie den gesamten Quellcode (einschließlich .cs- und RESX--Dateien) aus jedem Visual Studio SDK-verweisenden Projekt in das gemeinsame Projekt. Belassen Sie die datei source.extension.vsixmanifest im VSIX-Projekt.

    Screenshot mit einem freigegebenen Projekt, das alle Quelldateien enthält.

  6. Verschieben von Metadatendateien (z. B. Versionshinweise, Lizenz und Symbole) und VSCT-Dateien in ein freigegebenes Verzeichnis. Fügen Sie sie dann als verknüpfte Dateien zum VSIX-Projekt hinzu. Beachten Sie, dass das freigegebene Verzeichnis vom freigegebenen Projekt getrennt ist.

    Screenshot mit Auswahlmöglichkeiten zum Hinzufügen von Metadaten und V S C T-Dateien als verknüpfte Dateien.

    • Legen Sie bei Metadatendateien Buildvorgang auf Inhalt fest. Legen Sie In VSIX einbeziehen auf Truefest.

      Screenshot, der das Einbeziehen von Metadatendateien in V S I X zeigt.

    • Legen Sie bei VSCT-Dateien Buildvorgang auf VSCTCompile fest. Legen Sie In VSIX einbeziehen auf Falsefest.

      Screenshot mit ausgewählten Eigenschaften für eine V S C T-Datei.

      Wenn sich Visual Studio beschwert, dass diese Einstellung nicht unterstützt wird, können Sie die Buildaktion manuell ändern, indem Sie das Projekt entladen und Content in VSCTCompileändern.

      -<Content Include="..\SharedFiles\VSIXProject1Package.vsct">
      -  <Link>VSIXProject1Package.vsct</Link>
      -</Content>
      +<VSCTCompile Include="..\SharedFiles\VSIXProject1Package.vsct">
      +  <Link>VSIXProject1Package.vsct</Link>
      +  <ResourceName>Menus.ctmenu</ResourceName>
      +</VSCTCompile>
      
  7. Erstellen Sie Ihr Projekt, um zu bestätigen, dass keine Fehler aufgetreten sind.

Ihr Projekt ist jetzt bereit, Visual Studio 2022-Unterstützung hinzuzufügen.

Hinzufügen eines Visual Studio 2022-Ziels

In diesem Abschnitt wird davon ausgegangen, dass Sie die Schritte zum Faktorisieren Ihrer Visual Studio-Erweiterung mit freigegebenen Projekten abgeschlossen haben.

Fügen Sie Visual Studio 2022-Unterstützung zu Ihrer Erweiterung hinzu, indem Sie die folgenden Schritte ausführen. Sie können sie mit Visual Studio 2019 abschließen.

  1. Fügen Sie Ihrer Lösung ein neues VSIX-Projekt hinzu. Dieses Projekt wird auf Visual Studio 2022 ausgerichtet. Entfernen Sie den Quellcode, der in der Vorlage enthalten ist, behalten Sie jedoch die source.extension.vsixmanifest Datei bei.

  2. Fügen Sie in Ihrem neuen VSIX-Projekt einen Verweis auf dasselbe geteilte Projekt hinzu, auf das Ihr VSIX, das auf Visual Studio 2019 abzielt, verweist.

    Screenshot: Projektmappe mit einem freigegebenen Projekt und zwei VSIX-Projekten

  3. Stellen Sie sicher, dass das neue VSIX-Projekt ordnungsgemäß erstellt wird. Möglicherweise müssen Sie Verweise hinzufügen, um ihrem ursprünglichen VSIX-Projekt zu entsprechen, um Compilerfehler zu beheben.

  4. Aktualisieren Sie bei verwalteten Visual Studio-Erweiterungen Ihre Paketverweise von 16.x (oder früher) auf die 17.x-Paketversionen in Ihrer Visual Studio 2022-Zielprojektdatei. Verwenden Sie den NuGet-Paket-Manager, oder bearbeiten Sie die Projektdatei direkt:

    -<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" />
    +<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0" />
    -<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.10.32" />
    +<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0" />
    

    Die im vorherigen Code gezeigten Versionen dienen nur zur Demonstration. Verwenden Sie in Ihrem Code Versionen, die von der NuGet-Websiteverfügbar sind.

    In vielen Fällen wurden Paket-IDs geändert. Eine Liste der Änderungen in Visual Studio 2022 finden Sie in der Paket-/Assemblyzuordnungstabelle.

    In C++ geschriebene Erweiterungen verfügen noch nicht über ein verfügbares SDK zum Kompilieren.

  5. Für C++-Projekte müssen Erweiterungen für AMD64 kompiliert werden. Bei verwalteten Erweiterungen sollten Sie das Projekt von der Erstellung für Beliebige CPU ggf. in x64 ändern. Durch diese Änderung wird sichergestellt, dass ihre Erweiterung in Visual Studio 2022 immer in einem 64-Bit-Prozess geladen wird. Jede CPU ist ebenfalls in Ordnung, könnte jedoch Warnungen erzeugen, wenn Sie auf x64-exklusive native Binärdateien verweisen.

    Jede Abhängigkeit, die Ihre Erweiterung möglicherweise in einem systemeigenen Modul hat, muss von einem x86-Bild auf ein AMD64-Bild aktualisiert werden.

  6. Bearbeiten Sie Ihre source.extension.vsixmanifest Datei, um die Zielbestimmung von Visual Studio 2022 widerzuspiegeln. Legen Sie das <InstallationTarget>-Tag fest, um Visual Studio 2022 anzugeben. Legen Sie das ProductArchitecture-Element fest, um eine AMD64-Nutzlast anzugeben.

    <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
       <ProductArchitecture>amd64</ProductArchitecture>
    </InstallationTarget>
    

    Wichtig

    In Visual Studio 2019 macht der Designer für diese Datei das neue ProductArchitecture-Element nicht verfügbar. Sie müssen einen XML-Editor verwenden, um diese Änderung vorzunehmen. Um auf den XML-Editor zuzugreifen, wechseln Sie zum Projektmappen-Explorer, und wählen Sie den Befehl Öffnen mit aus.

    Das ProductArchitecture-Element ist kritisch. Visual Studio 2022 installiert Ihre Erweiterung nicht ohne sie.

    Element Wert Beschreibung
    ProductArchitecture x86, amd64 Die Plattformen, die von diesem VSIX unterstützt werden. Keine Unterscheidung zwischen Groß-/Kleinbuchstaben Verwenden Sie eine Plattform pro Element und ein Element pro InstallationTarget Instanz. Bei Produktversionen unter 17.0 wird der Standardwert x86 und kann weggelassen werden. Für Produktversionen 17.0 und höher ist dieses Element erforderlich, und es gibt keinen Standardwert. Für Visual Studio 2022 ist der einzige gültige Inhalt für dieses Element amd64.
  7. Nehmen Sie alle anderen Anpassungen vor, die in source.extension.vsixmanifest erforderlich sind, um der Version für Visual Studio 2019 (sofern vorhanden) zu entsprechen.

    Wenn Sie zwei Versionen Ihrer Erweiterung veröffentlichen, die jeweils auf eine andere Version von Visual Studio abzielen, stellen Sie sicher, dass die ID des VSIX im Identity Element des Manifests für jede Erweiterung unterschiedlich ist.

An diesem Punkt verfügen Sie über eine Visual Studio 2022-gezielte Erweiterung VSIX. Sie sollten Ihr für Visual Studio 2022 vorgesehenes VSIX-Projekt erstellen und alle angezeigten Buildunterbrechungen durchgehen. Wenn Sie keine Build-Fehler in Ihrem auf Visual Studio 2022 ausgerichteten VSIX-Projekt haben, herzlichen Glückwunsch! Sie sind bereit für das Testen.

Behandeln von Breaking Changes für APIs

Das Unterbrechen von API-Änderungen erfordert möglicherweise Updates für Code, der in früheren Versionen von Visual Studio ausgeführt wurde. Tipps zum Aktualisieren Ihres Codes finden Sie unter Wichtige API-Änderungen in Visual Studio 2022.

Beim Anpassen des Codes wird die Verwendung der bedingten Kompilierung empfohlen. Ihr Code kann dann weiterhin frühere Visual Studio-Versionen unterstützen, während Unterstützung für Visual Studio 2022 hinzugefügt wird.

Wenn die für Visual Studio 2022 vorgesehene Erweiterung erstellt wird, fahren Sie mit Tests fort.

Verwenden von Symbolen für die bedingte Kompilierung

Wenn Sie für Visual Studio 2022 und frühere Versionen denselben Quellcode verwenden möchten, müssen Sie möglicherweise die bedingte Kompilierung verwenden. Anschließend können Sie zur Anpassung an Breaking Changes Ihren Code forken. Die bedingte Kompilierung ist ein Feature der Sprachen C#, Visual Basic und C++. Sie kann verwendet werden, um den meisten Code freizugeben und dabei divergierende APIs an bestimmten Stellen zu beachten.

Weitere Informationen zur Verwendung von Präprozessordirektiven und Symbolen für die bedingte Kompilierung finden Sie unter C#-Präprozessordirektiven.

Ihre Projekte, die auf frühere Visual Studio-Versionen abzielen, benötigen ein Symbol für die bedingte Kompilierung. Dieses Symbol kann dann verwendet werden, um den Code zu klonen und die verschiedenen APIs zu nutzen. Sie können das Symbol für die bedingte Kompilierung auf der Projekteigenschaftenseite festlegen:

Screenshot mit dem Feld zum Eingeben eines Symbols für die bedingte Kompilierung.

Stellen Sie sicher, dass Sie das Kompilierungssymbol für Alle Konfigurationen festlegen. Standardmäßig gilt das eingegebene Symbol möglicherweise nur für eine Konfiguration.

C#-Techniken

Sie können das Kompilierungssymbol wie im folgenden Code dargestellt als Präprozessordirektive (#if) verwenden. Anschließend können Sie Ihren Code forken, um einen Breaking Change zwischen Visual Studio-Versionen zu behandeln.

    Guid myGuid = new Guid("{633FBA02-719B-40E7-96BF-0899767CD104}");
    uint myFlags = 0;
    IVsShell shell = await AsyncServiceProvider.GlobalProvider.GetServiceAsync<SVsShell, IVsShell>();
#if Dev16
    shell.LoadUILibrary(myGuid, myFlags, out uint ptrLib);
#else
    shell.LoadUILibrary(myGuid, myFlags, out IntPtr ptrLib);
#endif

In einigen Fällen können Sie var verwenden, um die Benennung des Typs zu vermeiden und die Notwendigkeit von #if Regionen zu vermeiden. Der vorangehende Codeausschnitt kann auch wie folgt geschrieben werden:

    Guid myGuid = new Guid("{633FBA02-719B-40E7-96BF-0899767CD104}");
    uint myFlags = 0;
    IVsShell shell = await AsyncServiceProvider.GlobalProvider.GetServiceAsync<SVsShell, IVsShell>();
    shell.LoadUILibrary(myGuid, myFlags, out var ptrLib);

Wenn Sie die #if Syntax verwenden, beachten Sie, wie Sie die Dropdownliste für den Sprachdienstkontext verwenden können, um die Syntaxmarkierung zu ändern. Die andere Dropdownliste hilft dem Sprachdienst, sich auf eine Visual Studio-Zielversion für diese Erweiterung im Vergleich zu einer anderen zu konzentrieren.

Screenshot, der die bedingte Kompilierung in einem freigegebenen Projekt zeigt.

XAML-Freigabetechniken

XAML verfügt nicht über einen Präprozessor, um das Anpassen von Inhalten basierend auf Präprozessorsymbolen zu ermöglichen. Möglicherweise müssen Sie zwei XAML-Seiten kopieren und verwalten, deren Inhalt sich zwischen Visual Studio 2022 und früheren Versionen unterscheidet.

In einigen Fällen kann ein Verweis auf einen Typ, der in unterschiedlichen Assemblys in Visual Studio 2022 und früheren Versionen vorhanden ist, in einer XAML-Datei weiterhin dargestellt werden. Entfernen Sie den Namespace, der auf die Assembly verweist:

-xmlns:vsui="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.14.0"
-Value="{DynamicResource {x:Static vsui:TreeViewColors.SelectedItemActiveBrushKey}}"
+Value="{DynamicResource TreeViewColors.SelectedItemActiveBrushKey}"

Teste deine Erweiterung

Um eine Erweiterung zu testen, die auf Visual Studio 2022 ausgerichtet ist, müssen Sie Visual Studio 2022 installiert haben. Sie können 64-Bit-Erweiterungen nicht in früheren Versionen von Visual Studio ausführen.

Sie können Visual Studio 2022 verwenden, um Ihre Erweiterungen zu erstellen und zu testen, unabhängig davon, ob sie auf Visual Studio 2022 oder eine frühere Version abzielen. Wenn Sie ein VSIX-Projekt aus Visual Studio 2022 öffnen, wird eine experimentelle Instanz von Visual Studio geöffnet.

Es wird dringend empfohlen, mit jeder Version von Visual Studio zu testen, die die Erweiterung unterstützen soll.

Veröffentlichen Sie Ihre Erweiterung

Sie haben Ihrer Erweiterung ein Visual Studio 2022-Ziel hinzugefügt und getestet. Jetzt sind Sie bereit, die Erweiterung zu veröffentlichen, damit die Welt sie bewundern kann.

Visual Studio Marketplace

Das Veröffentlichen Ihrer Erweiterung auf Visual Studio Marketplace ist eine hervorragende Möglichkeit, um neue Benutzer zu finden und zu installieren. Unabhängig davon, ob Ihre Erweiterung ausschließlich auf Visual Studio 2022 ausgerichtet ist oder auch auf ältere Visual Studio-Versionen ausgerichtet ist, ist der Marketplace vorhanden, um Sie zu unterstützen.

In Zukunft ermöglicht Ihnen der Marketplace, mehrere VSIXs in nur einen Marketplace-Eintrag hochzuladen. Anschließend können Sie Ihr Visual Studio 2022-gezieltes VSIX und ein VSIX für eine frühere Version von Visual Studio hochladen. Ihre Benutzer erhalten automatisch die richtige VSIX für die visual Studio-Version, die sie installiert haben, wenn sie den Visual Studio-Erweiterungs-Manager verwenden.

Benutzerdefiniertes Installationsprogramm

Wenn Sie eine MSI- oder EXE-Datei erstellen, um Ihre Erweiterung zu installieren und vsixinstaller.exe aufrufen, um (Teile Ihrer) Erweiterung zu installieren, sollten Sie wissen, dass das VSIX-Installationsprogramm in Visual Studio 2022 aktualisiert wurde. Entwickler müssen die Version des VSIX-Installationsprogramms verwenden, das im Lieferumfang von Visual Studio 2022 enthalten ist, um Erweiterungen für diese Version von Visual Studio zu installieren.

Das VSIX-Installationsprogramm in Visual Studio 2022 installiert auch anwendbare Erweiterungen, die auf frühere Versionen von Visual Studio abzielen, die mit Visual Studio 2022 auf demselben Computer vorhanden sind.

Netzwerkfreigabe

Sie können Ihre Erweiterung über ein LAN oder auf eine andere Weise teilen. Wenn Sie Visual Studio 2022 und frühere Versionen als Ziel verwenden, müssen Sie Ihre mehreren VSIXs einzeln freigeben. Geben Sie ihnen Dateinamen (oder platzieren Sie sie in eindeutigen Ordnern), die Ihren Benutzern helfen, zu wissen, welche VSIX basierend auf der installierten Version von Visual Studio installiert werden soll.

Abhängigkeiten

Wenn Ihr VSIX andere VSIXs als Abhängigkeiten über das <dependency>-Element angibt, muss jeder referenzierte VSIX in denselben Zielen und Produktarchitekturen wie Ihr VSIX installiert werden. Wenn eine abhängige VSIX die gezielte Installation von Visual Studio nicht unterstützt, schlägt Ihr VSIX fehl.

Es ist ok für die abhängige VSIX, mehr Ziele und Architekturen zu unterstützen als Ihre, nur nicht weniger. Diese Einschränkung bedeutet, dass der Bereitstellungs- und Verteilungsansatz eines VSIX mit Abhängigkeiten die der Abhängigen spiegeln sollte.

Fragen und Antworten

Q: Meine Erweiterung erfordert keine Interoperabilitätsänderungen, da sie nur Daten bereitstellt (z. B. Vorlagen). Kann ich eine einzelne Erweiterung erstellen, die auch Visual Studio 2022 enthält?

A: Ja! Weitere Informationen hierzu finden Sie unter Erweiterungen ohne Ausführung von Code.

F: Eine NuGet-Abhängigkeit führt alte Interoperabilitätsassemblys ein und verursacht Konflikte zwischen Klassen. Was soll ich tun?

A: Fügen Sie Ihrer .csproj--Datei die folgende Zeile hinzu, um doppelte Assemblies zu vermeiden.

    <PackageReference Include="<Name of offending assembly>" ExcludeAssets="compile" PrivateAssets="all" />

Dieser Code verhindert, dass Paketverweise die alte Version der Assembly aus anderen Abhängigkeiten importieren.

Q: Meine Befehle und Hotkeys funktionieren in Visual Studio nicht mehr, nachdem ich meine Quelldateien zu einem freigegebenen Projekt gewechselt habe. Was soll ich tun?

A: Step 2.4 des Image Optimizer-Beispiels zeigt, wie VSCT-Dateien als verknüpfte Elemente hinzugefügt werden, sodass sie in Ihre VSCT-Datei kompiliert werden.

Führen Sie ein Schritt-für-Schritt-Beispiel aus, ImageOptimizermit Links zum Projekt und Codeänderungen für jeden Schritt.