Anfang dieser Woche haben wir Visual Studio 2019 Version 16.1 Preview 1 veröffentlicht (siehe Versionshinweise ). Dies ist die erste Vorschau des ersten Updates für Visual Studio 2019. Wenn Sie noch nicht für das Abrufen von Vorschauversionen eingerichtet sind, tun Sie dies jetzt . Der Vorschau-Kanal wird neben dem Release-Kanal installiert und sie stören sich nicht gegenseitig. Ich empfehle allen Autoren von Erweiterungen, die Vorschau zu installieren.

Haben Sie jetzt die 16.1-Vorschau installiert? Das ist großartig. Hier sind einige Funktionen, die Sie vielleicht interessant finden.
Dieser Artikel im BlogGemeinsame Projektunterstützung
Es gibt mehrere Gründe, warum Erweiterungsautoren eine Erweiterung manchmal in mehrere Projekte aufteilen müssen, um die verschiedenen Versionen von Visual Studio zu unterstützen. Wenn Sie eine API verwenden, die für eine frühere Version von Visual Studio nicht vorhanden war, oder wenn zwischen den Versionen, die Sie unterstützen möchten, wichtige Änderungen vorgenommen wurden, können Sie Ihre Erweiterung jetzt einfacher aufteilen.
Mit Visual Studio 2019 Version 16.1, Vorschau 1, wurde die Unterstützung für das Verweisen auf freigegebene Projekte aus VSIX-Projekten in derselben Lösung hinzugefügt.

Sie können allgemeinen Code in einem separaten freigegebenen Projekt platzieren, das zur Erstellungszeit direkt in die VSIX-Projekte kompiliert wird. Der einzige Code, der dann in den VSIX-Projekten selbst vorhanden ist, ist Code, der spezifisch für die unterstützte Visual Studio-Version ist. Das Ergebnis sind zwei separate VSIXs, die auf ihren eigenen spezifischen Visual Studio-Versionsbereich abzielen und den größten Teil des Codes aus dem freigegebenen Projekt gemeinsam nutzen. Überprüfen Sie den Code für die Extension Manager-Erweiterung , die genau dies tut.
Keine .resx-Datei mehr erforderlich
Beim Hinzufügen von Befehlen, Menüs usw. Bei Verwendung einer VSCT-Datei müssen Sie eine .resx-Datei angeben, die mit der MergeWithCTO MSBuild-Eigenschaft gekennzeichnet ist. Die Vorlagen in Visual Studio kümmern sich um das Hinzufügen dieser Datei und fügen eine .ico-Datei hinzu, auf die von der .resx-Datei verwiesen wird. Die Notwendigkeit einer .resx-Datei ist jedoch ein Implementierungsdetail, und die meisten Erweiterungen müssen sie nicht verwenden.
Um das VSIX-Projekt zu vereinfachen, wurden die Anforderungen für die .resx / .ico-Dateien bei Verwendung des neuesten Microsoft.VSSDK.BuildTools NuGet-Pakets Version 16.0 oder neuer entfernt.
Hinter den Kulissen bietet das NuGet-Paket eine leere .resx-Datei zum Kompilieren mit der MergeWithCTO- Eigenschaft, sofern Sie keine eigene im Projekt registriert haben.
Pro-Monitor-Bewusstsein
In 16.1 wird mit .NET Framework 4.8 zusätzliche Unterstützung für die Erkennung pro Monitor aktiviert. Die Windows Forms-Benutzeroberfläche verwaltet jetzt die DPI-Skalierung auf allen Monitoren besser. Dies kann jedoch nach der Installation von .NET Framework 4.8 zu Problemen mit der Benutzeroberfläche in Ihrer Erweiterung führen.
Wenn Sie Windows Forms in einer Erweiterung verwenden, können Sie das Skalierungsverhalten von Visual Studio 2017 anpassen, indem Sie Ihr Formular oder Ihre Steuerelementerstellung in einen DpiAwareness.EnterDpiScope- Aufruf einschließen .
using (DpiAwareness.EnterDpiScope(DpiAwarenessContext.SystemAware)) using (var form = new MyForm()) { form.ShowDialog(); }
Sie müssen lediglich einen Verweis auf das Microsoft.VisualStudio.DpiAwareness NuGet-Paket hinzufügen. Verwenden Sie dieses Paket auch in Erweiterungen, die auf frühere Versionen von Visual Studio abzielen. Beachten Sie jedoch, dass es nur wirksam wird, wenn es in Version 16.1 und höher ausgeführt wird. Daher ist die Verwendung in Erweiterungen, die mehrere Versionen von Visual Studio umfassen, sicher.
Um die Simulation mehrerer Monitore mit unterschiedlicher DPI-Skalierung zu vereinfachen, hat ein Techniker des Visual Studio IDE-Teams ein praktisches kleines Tool erstellt und auf GitHub installiert . Das Team hat dieses Tool verwendet, als es Unterstützung für die Wahrnehmung pro Monitor hinzufügte, sodass Sie es möglicherweise auch hilfreich finden.
Lesen Sie mehr darüber, wie Sie mit dem Pro-Monitor-Bewusstsein für Extender umgehen können.
Synchrones automatisches Laden deaktiviert
Vor 18 Monaten haben wir eine E-Mail an Erweiterungspartner gesendet, in der die Ablehnung des synchronen automatischen Ladens von Erweiterungspaketen angekündigt wurde. Vor einem Jahr haben wir einen Blog-Beitrag mit weiteren Details veröffentlicht, in dem dargelegt wurde, dass synchron synchron geladene Pakete in einer zukünftigen Version von Visual Studio nicht mehr unterstützt werden. Diese Version ist 16.1.
Es gibt großartige Beispiele für die Migration zu AsyncPackage mit aktiviertem Hintergrundladevorgang, und die meisten Erweiterungen haben heute bereits den Übergang vollzogen . Wenn Sie dies noch nicht getan haben, ist jetzt ein guter Zeitpunkt dafür, bevor 16.1 die Vorschau verlässt.
Neues SDK-Metapaket
Das Metapaket Microsoft.VisualStudio.SDK ist ein einzelnes NuGet-Paket, das auf alle verschiedenen Visual Studio-Pakete verweist, aus denen das SDK besteht. Das Coole am Meta-Paket ist, dass Sie Zugriff auf alle Schnittstellen und Dienste haben. Darüber hinaus vermeiden Sie Probleme mit nicht übereinstimmenden Paketversionen.
Bei der Veröffentlichung von Visual Studio 2019 (16.0) verwies die VSIX-Projektvorlage auf die 15.9-Version des SDK-Metapakets. Das lag daran, dass sich die 16.0-Version noch in der Entwicklung befand. Alle einzelnen Pakete mussten in NuGet veröffentlicht werden, bevor wir sie vom Metapaket abhängig machen konnten.
Die gute Nachricht ist, dass wir jetzt endlich die 16.0-Version fertig haben. Sie sollten es verwenden, wenn die niedrigste Version von Visual Studio, wenn Ihre Erweiterung 16.0 unterstützt. Weitere Informationen zur Versionierung von Erweiterungen finden Sie hier .

Senior Program Manager, Visual Studio-Erweiterbarkeit