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, die die Modernisierung Ihrer Erweiterung in diesem Artikel nicht erfordern. 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.

Installieren von Visual Studio und Kompilierungserweiterungen

Installieren Sie Visual Studio 2022 aus 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:

Auch wenn Sie auf keine wichtigen Änderungen verweisen, müssen Erweiterungen mit der CPU- oder x64-Plattform kompiliert werden. Die x86-Plattform ist nicht mit dem 64-Bit-Prozess in Visual Studio 2022 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 Den Quellcode in ein freigegebenes Projekt , um die Zielbestimmung für Visual Studio 2022 und ältere Versionen zu ermöglichen.
  3. Fügen Sie ein Visual Studio 2022-gezieltes VSIX-Projekt und eine Paket-/Assembly-Neuzuordnungstabelle hinzu.
  4. Nehmen Sie erforderliche Codeanpassungen vor.
  5. Testen Sie die Visual Studio 2022-Erweiterung.
  6. Veröffentlichen Sie Ihre 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 source.extension.vsixmanifest Datei 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 dem Testen fortfahren.

Hinweis

Wenn Sie eine neue Visual Studio-Erweiterung mithilfe von Visual Studio 2022 erstellen und auch visual Studio 2019 oder eine frühere Version verwenden möchten, lesen Sie dieses Handbuch.

MSBuild-Aufgaben

Wenn Sie MSBuild-Aufgaben erstellen, beachten Sie, dass in Visual Studio 2022 wahrscheinlich, 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 sauber 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 für das Visual Studio SDK (z. B. Newtonsoft.Json.dll) eindeutig sind, wurden möglicherweise über einen einfachen <Reference Include="Newtonsoft.Json" /> Verweis vor Visual Studio 2022 erkannt. 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. Führen Sie diese Warnungen durch, und beheben Sie so viele wie möglich. Erwägen Sie die Verwendung von In-Code-Regionen #pragma warning disable <id> , um Warnungen zu unterdrücken, die Nicht aufgelöst werden können.

Gemeinsame Projekte für multiadressierung verwenden

Freigegebene Projekte sind ein Projekttyp, der in Visual Studio 2015 eingeführt wurde. Für freigegebene Projekte in Visual Studio können Quellcodedateien zwischen mehreren Projekten gemeinsam genutzt und unterschiedlich erstellt werden, indem bedingte Kompilierungssymbole und eindeutige Sätze von Verweisen 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 Codefreigabe, aber unterschiedliche 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 enthält nur eine source.extension.vsixmanifest Instanz und die Paketverweise auf das 16.x SDK oder das 17.x SDK. Diese VSIX-Projekte verfügen auch über einen freigegebenen Projektverweis auf ein neues freigegebenes Projekt, das den gesamten Quellcode hosten kann, der in den beiden Visual Studio-Versionen freigegeben 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. Wenn Sie dies noch nicht getan haben, modernisieren Sie Ihre Projekte, 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 Projektmappe, und wählen Sie dann "Neues Projekt hinzufügen>" aus.

    Screenshot that shows the selections for adding a new project.

  3. Suchen Sie im Dialogfeld "Neues Projekt hinzufügen" nach freigegebenem Projekt, und wählen Sie dann die Vorlage "Freigegebenes Projekt" aus.

    Screenshot that shows searching for and selecting the Shared Project template.

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

    Screenshot that shows selections for adding a shared project reference.

  5. Verschieben Sie den gesamten Quellcode (einschließlich CS- und RESX-Dateien) aus jedem Visual Studio SDK-verweisenden Projekt in das gemeinsam genutzte Projekt.Move all the source code (including .cs and .resx files) from each Visual Studio SDK-referencing project to its shared project counterpart. Belassen Sie die Datei "source.extension.vsixmanifest " im VSIX-Projekt.

    Screenshot that shows a shared project containing all source files.

  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 that shows selections for adding metadata and V S C T files as linked files.

    • Legen Sie für Metadatendateien "Buildaktion" auf "Inhalt" fest. Legen Sie "Einschließen" in VSIX auf "True" fest.

      Screenshot that shows including metadata files in V S I X.

    • Legen Sie für VSCT-Dateien "Buildaktion" auf "VSCTCompile" fest. Legen Sie "Einschließen" in VSIX auf "False" fest.

      Screenshot that shows selected properties for a V S C T file.

      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 zu ContentVSCTCompile:

      -<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 Faktorieren Der 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 Projektmappe 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 Datei "source.extension.vsixmanifest " bei.

  2. Fügen Sie in Ihrem neuen VSIX-Projekt einen Verweis auf dasselbe freigegebene Projekt hinzu, auf das Ihre Visual Studio 2019-Ziel-VSIX-Verweise verweisen.

    Screenshot that shows a solution with one shared project and two V S I X projects.

  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 die 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-Website verfü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 jede CPU auf 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, kann aber Warnungen erzeugen, wenn Sie auf x64-only systemeigene 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 Datei "source.extension.vsixmanifest ", 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 zu 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. Groß-/Kleinschreibung wird nicht beachtet. Verwenden Sie eine Plattform pro Element und ein Element pro InstallationTarget Instanz. Bei Produktversionen unter 17.0 ist x86 der Standardwert 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 amd64der einzige gültige Inhalt für dieses Element .
  7. Nehmen Sie alle anderen Anpassungen vor, die in "source.extension.vsixmanifest " erforderlich sind, damit sie mit dem für Visual Studio 2019 (sofern vorhanden) übereinstimmen.

    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 Visual Studio 2022-gezieltes VSIX-Projekt erstellen und alle angezeigten Buildunterbrechungen durchlaufen. Wenn Sie keine Buildunterbrechungen in Ihrem Visual Studio 2022-gezielten VSIX-Projekt haben, herzlichen Glückwunsch! Sie können testen.

Behandeln von unterbrechungsweisen API-Änderungen

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 "Aktuelle API-Änderungen" in Visual Studio 2022.

Wenn Sie Ihren Code anpassen, empfiehlt es sich, die bedingte Kompilierung zu verwenden. 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 Sie ihre Visual Studio 2022-gezielte Erweiterungserstellung erhalten, fahren Sie mit dem Testen 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 ihren Code verzweigen, um sich an unterbrechungsfähige Änderungen anzupassen. 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 verzweigen, um die verschiedenen APIs zu verwenden. Sie können das Symbol für die bedingte Kompilierung auf der Projekteigenschaftenseite festlegen:

Screenshot that shows the box for entering a conditional compilation symbol.

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 verzweigen, um eine unterbrechungsbewältige Änderung zwischen Visual Studio-Versionen zu bewältigen.

    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 die var Benennung des Typs vermeiden und die Notwendigkeit von #if Regionen 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 that shows conditional compilation in a shared project.

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 Standard enthalten, 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}"

Testen der 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 der Erweiterung

Sie haben Ihrer Erweiterung ein Visual Studio 2022-Ziel hinzugefügt und getestet. Jetzt können Sie die Erweiterung für die Welt veröffentlichen, die Sie bewundern können.

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 die vsixinstaller.exe Erweiterung zu installieren (Teil der) Erweiterung zu installieren, wissen Sie, 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 abhängigkeiten Spiegel sollte.

Q&A

F: 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. Informationen hierzu finden Sie unter Erweiterungen, ohne Code auszuführen.

F: Eine NuGet-Abhängigkeit führt zu alten Interoperabilitätsassemblys und führt zu Zusammenstößen von Klassen. Wie sollte ich vorgehen?

A: Fügen Sie der CSPROJ-Datei die folgende Zeile hinzu, um doppelte Assemblys 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.

F: Meine Befehle und Hotkeys funktionieren in Visual Studio nicht mehr, nachdem ich meine Quelldateien zu einem freigegebenen Projekt gewechselt habe. Wie sollte ich vorgehen?

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

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