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, 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 Kompilieren von Erweiterungen

Installieren Sie Visual Studio 2022 aus Visual Studio 2022-Downloads.

In einer .NET-Sprache geschriebene Erweiterungen

Das Visual Studio SDK, das für verwaltete Erweiterungen Visual Studio 2022 zum Ziel hat, steht ausschließlich auf NuGet zur Verfügung:

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

Auch wenn Sie keine Breaking Changes angeben,müssen Erweiterungen mit der Plattform Any CPU oder x64 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. Refaktorisieren Sie Ihren Quellcode in ein gemeinsames Projekt , um die Ausrichtung 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 ausgeführtem 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 sie in Visual Studio 2022 wahrscheinlich in einen 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 Sie Ihre VSIX-Projekte.

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 to 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 eine PackageReference 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 auffindbar. 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 sich durch diese Warnungen 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 Lösung für jedes vorhandene Projekt, das auf das Visual Studio SDK verweist, ein neues freigegebenes Projekt hinzu. icken Sie mit der rechten Maustaste auf die Lösung und wählen Sie dann Neues>Projekt hinzufügen.

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

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

    Screenshot der Suche nach und Auswahl der Vorlage Freigegebenes Projekt.

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

    Screenshot, der die Auswahl zum Hinzufügen einer freigegebenen Projektreferenz zeigt.

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

    Screenshot eines freigegebenen Projekts, 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 der Auswahl zum Hinzufügen von Metadaten und V S C T-Dateien als verknüpfte Dateien.

    • Legen Sie für Metadatendateien Build Action auf Inhalt fest. Legen Sie Include in VSIX auf True fest.

      Screenshot, der zeigt, wie Metadatendateien in V S I X eingeschlossen werden.

    • Legen Sie die VSCT-Dateien Build Action auf VSCTCompile fest. Legen Sie Include in VSIX auf False fest.

      Screenshot der 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 Build Action manuell ändern, indem Sie das Projekt entladen und zu Content VSCTCompile:

      -<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 nach den folgenden Schritten die Visual Studio 2022-Unterstützung zu Ihrer Erweiterung hinzu. Sie können sie mit Visual Studio 2019 abschließen.

  1. Fügen Sie Ihrer Projektmappe ein neues VSIX-Projekt hinzu. Dieses Projekt hat Visual Studio 2022 als Ziel. 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 einer Lösung mit einem freigegebenen Projekt und zwei V S I X-Projekten.

  3. Stellen Sie sicher, dass das neue VSIX-Projekt ordnungsgemäß erstellt wird. Gegebenenfalls müssen zur Abstimmung Ihres ursprünglichen VSIX-Projekts Verweise hinzufügen, 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-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 Any CPU auf x64 ändern. Durch diese Änderung wird sichergestellt, dass ihre Erweiterung in Visual Studio 2022 immer in einem 64-Bit-Prozess geladen wird. Any CPU ist ebenfalls in Ordnung, kann aber Warnungen erzeugen, wenn Sie nur auf x64-systemeigene Binärdateien verweisen.

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

  6. Bearbeiten Sie Ihre Datei source.extension.vsixmanifest so, dass Visual Studio 2022 als Ziel widergespiegelt wird. Legen Sie das Tag <InstallationTarget> zur Angabe von Visual Studio 2022 fest. Legen Sie das Element ProductArchitecture zur Angabe einer AMD64-Payload fest.

    <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 Open with 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 eine Erweiterungs-VSIX mit Visual Studio 2022 als Ziel. 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 sind nun testbereit.

Behandeln Sie wichtige 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 Behandeln wichtiger 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 Sie Symbole 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 wichtige Ä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 des Felds 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 verzweigen, um eine wichtige Ä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 der bedingten Kompilierung in einem freigegebenen Projekt.

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

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

Benutzerdefinierter Installer

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 einer VSIX mit Abhängigkeiten dem ihrer abhängigen Elemente entsprechen 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.