Fitur baru untuk penulis ekstensi di Visual Studio 2019 versi 16.1

Awal minggu ini, kami merilis Visual Studio 2019 versi 16.1 Pratinjau 1 (lihat catatan rilis ). Ini adalah pratinjau pertama dari pembaruan pertama ke Visual Studio 2019. Jika Anda belum siap untuk mendapatkan rilis pratinjau, silakan lakukan sekarang . Saluran pratinjau dipasang berdampingan dengan saluran rilis dan tidak saling mengganggu. Saya sangat merekomendasikan semua penulis ekstensi untuk menginstal pratinjau.




Sudahkah pratinjau 16.1 diinstal sekarang? Bagus sekali. Berikut adalah beberapa fitur di dalamnya yang mungkin menarik bagi Anda.


Artikel ini di blog

Dukungan proyek bersama


Ada beberapa alasan mengapa penulis ekstensi terkadang harus membagi ekstensi menjadi beberapa proyek untuk mendukung berbagai versi Visual Studio. Jika Anda menggunakan API yang tidak ada untuk versi Visual Studio sebelumnya atau jika ada perubahan di antara versi yang ingin Anda dukung, sekarang ada cara mudah untuk membagi ekstensi Anda.


Dengan Visual Studio 2019 versi 16.1 Pratinjau 1, kami telah menambahkan dukungan untuk merujuk Proyek yang Dibagikan dari proyek VSIX dalam solusi yang sama.



Anda dapat menempatkan kode umum dalam Proyek Bersama yang terpisah yang mengkompilasi langsung ke proyek VSIX saat membangun. Satu-satunya kode yang kemudian ada dalam proyek VSIX sendiri, adalah kode yang khusus untuk versi Visual Studio yang didukungnya. Hasilnya adalah dua VSIX terpisah yang menargetkan rentang versi Visual Studio khusus mereka sendiri dan berbagi sebagian besar kode dari Proyek Bersama. Periksa kode untuk ekstensi Extension Manager yang melakukan ini.


Tidak perlu lagi file .resx


Saat menambahkan perintah, menu, dll. menggunakan file VSCT, Anda harus menentukan file .resx yang ditandai dengan properti MergeWithCTO MSBuild. Templat di Visual Studio menangani penambahan file itu dan juga menambahkan file .ico yang dirujuk oleh file .resx. Namun, kebutuhan untuk .resx adalah detail implementasi dan sebagian besar ekstensi tidak perlu menggunakannya.


Dalam upaya untuk membuat proyek VSIX lebih sederhana, persyaratan untuk file .resx / .ico telah dihapus saat menggunakan Microsoft.VSSDK.BuildTools NuGet terbaru paket versi 16.0 atau lebih baru.


Di belakang layar, paket NuGet menyediakan .resx kosong untuk dikompilasi dengan properti MergeWithCTO kecuali Anda mendaftarkannya di proyek.


Kesadaran per monitor


Dukungan kesadaran tambahan per monitor sedang diaktifkan di 16.1 dengan .NET Framework 4.8 diinstal. Windows Forms UI sekarang lebih baik menangani penskalaan DPI di seluruh monitor. Namun, ini dapat menyebabkan masalah UI di ekstensi Anda setelah menginstal .NET Framework 4.8.


Saat menggunakan Formulir Windows dalam ekstensi, Anda bisa mencocokkan perilaku penskalaan Visual Studio 2017 dengan membungkus formulir Anda atau mengontrol pembuatan dalam panggilan DpiAwareness.EnterDpiScope .


using (DpiAwareness.EnterDpiScope(DpiAwarenessContext.SystemAware)) using (var form = new MyForm()) { form.ShowDialog(); } 

Yang Anda butuhkan adalah menambahkan referensi ke paket NuGet Microsoft.VisualStudio.DpiAwareness . Gunakan paket ini dalam ekstensi yang menargetkan versi Visual Studio sebelumnya juga tetapi perlu diketahui bahwa itu hanya akan berlaku ketika berjalan di 16.1 dan lebih baru. Jadi, aman untuk digunakan dalam ekstensi yang mencakup beberapa versi Visual Studio.


Untuk membuatnya lebih mudah untuk mensimulasikan beberapa monitor yang berjalan dengan penskalaan DPI yang berbeda, seorang insinyur dari tim Visual Studio IDE membuat alat kecil yang berguna dan meletakkannya di GitHub . Tim menggunakan alat ini ketika mereka menambahkan dukungan untuk kewaspadaan per monitor, sehingga Anda mungkin merasa terbantu juga.


Baca lebih lanjut tentang cara menangani kesadaran per monitor untuk ekstender .


Beban otomatis sinkron dinonaktifkan


18 bulan yang lalu, kami mengirim email ke mitra ekstensi yang mengumumkan penghentian otomatis pemuatan paket ekstensi secara sinkron. Setahun yang lalu, kami menindaklanjuti dengan posting blog dengan rincian lebih lanjut yang menguraikan bahwa paket yang dimuat secara sinkron secara otomatis tidak akan didukung dalam versi Visual Studio yang akan datang. Versi itu adalah 16.1.


Ada banyak contoh bagus tentang cara bermigrasi ke AsyncPackage dengan pemuatan latar belakang diaktifkan, dan sebagian besar ekstensi saat ini telah melakukan transisi. Jika Anda belum melakukannya, sekarang adalah waktu yang tepat untuk melakukannya sebelum 16.1 keluar dari pratinjau.


Paket meta SDK baru


Paket meta Microsoft.VisualStudio.SDK adalah paket NuGet tunggal yang mereferensikan semua berbagai paket Visual Studio yang membentuk SDK. Yang keren tentang paket meta adalah Anda memiliki akses ke semua antarmuka dan layanan. Selain itu, Anda juga menghindari masalah dengan versi paket yang tidak cocok.


Ketika kami merilis Visual Studio 2019 (16.0), templat VSIX Project mereferensikan versi 15.9 dari paket meta SDK. Itu karena versi 16.0 masih dalam pengembangan. Semua paket individu harus dipublikasikan ke NuGet sebelum kita dapat mengambil ketergantungan dari paket meta.


Berita baiknya adalah sekarang kita akhirnya memiliki versi 16.0. Anda harus menggunakannya jika versi terendah dari Visual Studio jika ekstensi Anda mendukung 16.0. dan Anda dapat membaca lebih lanjut tentang versi ekstensi di sini .


Mads kristensen
Mads kristensen

Manajer Program Senior, Visual Studio Extensibility

Source: https://habr.com/ru/post/id448784/


All Articles