Fitur baru untuk penulis ekstensi di Visual Studio 2019 v.16.1

Pada awal minggu lalu, kami merilis Visual Studio 2019 v.16.1 Pratinjau 1 (lihat catatan rilis ). Ini adalah pratinjau pertama dari pembaruan Visual Studio 2019 pertama. Jika Anda belum mengkonfigurasi untuk menerima versi Pratinjau, maka lakukan sekarang . Versi Pratinjau diinstal tanpa masalah di sebelah versi Rilis, sehingga tidak saling mengganggu. Saya sangat merekomendasikan bahwa semua penulis ekstensi menginstal versi Pratinjau.

Apakah Anda saat ini menginstal 16.1 Pratinjau? Bagus Berikut beberapa fitur yang mungkin Anda sukai. Detail di bawah potongan!



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 signifikan antara versi yang ingin Anda dukung. Sekarang menjadi jauh lebih mudah untuk membagi ekstensi.

Dalam Visual Studio 2019 v.16.1 Pratinjau 1, kami menambahkan dukungan untuk referensi ke Proyek Bersama dari proyek VSIX dalam solusi yang sama.

gambar

Anda dapat menempatkan kode umum dalam Proyek Bersama yang terpisah, yang langsung dikompilasi ke dalam proyek VSIX saat membangun. Satu-satunya kode yang kemudian ada dalam proyek VSIX sendiri adalah kode spesifik untuk versi Visual Studio yang didukung. Hasilnya adalah dua VSIX terpisah yang menargetkan jangkauan versi Visual Studio mereka sendiri dan berbagi sebagian besar kode dari proyek umum. Lihat kode untuk ekstensi Extension Manager yang melakukan hal itu.

Tidak perlu lagi file .resx


Saat menambahkan perintah, menu, dll. Menggunakan file VSCT, Anda harus menentukan file .resx yang ditandai dengan properti MergeWithCTOMSBuild . Template di Visual Studio berhati-hati dalam menambahkan file ini, dan juga menambahkan file .ico yang dirujuk oleh file .resx. Namun, kebutuhan untuk .resx adalah detail implementasi, dan sebagian besar ekstensi tidak perlu menggunakannya.

Untuk menyederhanakan proyek VSIX, persyaratan file .resx /.ico telah dihapus untuk mereka yang menggunakan paket NuGet terbaru Microsoft.VSSDK.BuildTools 16.0 atau lebih baru.

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

Kesadaran per monitor


Dukungan per-monitor tambahan disertakan dalam 16.1 dengan .NET Framework 4.8 diinstal. Windows Forms UI sekarang lebih baik dalam penskalaan DPI pada monitor. Namun, ini dapat menyebabkan masalah UI di ekstensi Anda setelah menginstal .NET Framework 4.8.

Saat menggunakan Formulir Windows dalam ekstensi, Anda bisa memetakan perilaku penskalaan Visual Studio 2017 dengan mengemas pembuatan formulir Anda atau kontrol di DpiAwareness.EnterDpiScope .

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

Yang perlu Anda lakukan adalah menambahkan tautan ke paket NuGet Microsoft.VisualStudio.DpiAwareness . Gunakan paket ini dalam ekstensi yang menargetkan versi Visual Studio sebelumnya, tetapi perlu diingat bahwa itu hanya akan berfungsi ketika digunakan dalam versi 16.1 dan yang lebih baru. Oleh karena itu, dapat digunakan dalam ekstensi yang menjangkau beberapa versi Visual Studio.

Untuk menyederhanakan simulasi beberapa monitor yang bekerja dengan penskalaan DPI yang berbeda, insinyur dari tim Visual Studio IDE membuat alat kecil yang praktis dan meletakkannya di GitHub . Tim menggunakan alat ini ketika mereka menambahkan dukungan untuk kesadaran per monitor, sehingga Anda juga dapat merasakan manfaatnya.

Baca lebih lanjut tentang cara bekerja dengan Kesadaran Per-Monitor .

Startup sinkron dinonaktifkan


18 bulan yang lalu, kami mengirim email ke mitra ekstensi, mengumumkan usangnya paket-paket ekstensi yang sinkron. Setahun yang lalu, kami menerbitkan posting blog dengan informasi yang lebih terperinci bahwa paket autostart yang sinkron tidak akan didukung dalam versi Visual Studio yang akan datang. Versi ini adalah 16.1.

Ada banyak contoh cara meningkatkan ke AsyncPackage dengan pemuatan latar belakang diaktifkan, dan sebagian besar ekstensi saat ini sudah ditransisikan. Jika Anda belum melakukannya, sekarang saatnya untuk melakukannya sebelum 16.1 keluar dari mode pratinjau.

SDK metapackage baru


Metapackage Microsoft.VisualStudio.SDK adalah paket NuGet terpisah yang mereferensikan semua berbagai paket Visual Studio yang membentuk SDK. Hal paling keren tentang metapackage 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), template proyek VSIX mereferensikan versi 15.9 dari metapackage SDK. Ini karena versi 16.0 masih dalam pengembangan. Semua paket individu harus dipublikasikan di NuGet sebelum kami bisa mendapatkan ketergantungan dari paket meta.

Berita baiknya adalah kita sekarang akhirnya siap untuk versi 16.0. Jika ekstensi Anda mendukung versi 16.0, maka Anda harus menggunakannya. Anda juga dapat mempelajari lebih lanjut tentang versi ekstensi di sini .

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


All Articles