Memperbarui ekstensi Visual Studio untuk Visual Studio 2022

Penting

Saran dalam artikel ini dapat memandu pengembang dalam memigrasikan ekstensi yang memerlukan perubahan besar untuk bekerja di Visual Studio 2019 dan Visual Studio 2022. Dalam kasus tersebut, kami sarankan Anda memiliki dua proyek VSIX dan kompilasi kondisional.

Banyak ekstensi akan berfungsi di Visual Studio 2019 dan Visual Studio 2022 dengan perubahan kecil yang tidak akan memerlukan mengikuti saran tentang memodernisasi ekstensi Anda di artikel ini. Coba ekstensi Anda di Visual Studio 2022 dan evaluasi opsi apa yang terbaik untuk ekstensi Anda.

Visual Studio 2022 adalah aplikasi 64-bit dan memperkenalkan beberapa perubahan yang melanggar di Visual Studio SDK. Artikel ini memancarkan Anda melalui langkah-langkah yang diperlukan untuk membuat ekstensi Anda berfungsi dengan pratinjau Visual Studio 2022 saat ini. Ekstensi Anda kemudian dapat siap diinstal pengguna sebelum Visual Studio 2022 mencapai ketersediaan umum.

Menginstal Visual Studio dan mengkompilasi ekstensi

Instal Visual Studio 2022 dari unduhan Visual Studio 2022.

Ekstensi yang ditulis dalam bahasa .NET

Visual Studio SDK yang menargetkan Visual Studio 2022 untuk ekstensi terkelola secara eksklusif ada di NuGet:

  • Metapackage Microsoft.VisualStudio.Sdk (versi 17.x) membawa sebagian besar atau semua rakitan referensi yang akan Anda butuhkan.
  • Paket Microsoft.VSSDK.BuildTools (versi 17.x) harus dirujuk dari proyek VSIX Anda sehingga dapat membangun VSIX yang mematuhi Visual Studio 2022.

Bahkan jika Anda tidak mereferensikan perubahan yang melanggar, ekstensi harus dikompilasi dengan platform CPU atau x64 apa pun. Platform x86 tidak kompatibel dengan proses 64-bit di Visual Studio 2022.

Ekstensi yang ditulis dalam C++

Visual Studio SDK untuk ekstensi yang dikompilasi dengan C++ tersedia dengan Visual Studio SDK yang diinstal, seperti biasa.

Bahkan jika Anda tidak mereferensikan perubahan yang melanggar, ekstensi harus dikompilasi secara khusus terhadap Visual Studio 2022 SDK dan untuk AMD64.

Ekstensi dengan kode yang sedang berjalan

Ekstensi dengan kode yang sedang berjalan harus dikompilasi khusus untuk Visual Studio 2022. Visual Studio 2022 tidak akan memuat ekstensi apa pun yang menargetkan versi Visual Studio yang lebih lama.

Pelajari cara memigrasikan ekstensi Anda untuk versi Visual Studio sebelumnya ke Visual Studio 2022:

  1. Modernisasi proyek Anda.
  2. Refaktor kode sumber Anda ke dalam proyek bersama untuk memungkinkan penargetan Visual Studio 2022 dan versi yang lebih lama.
  3. Tambahkan proyek VSIX yang ditargetkan Visual Studio 2022 dan tabel pemetakan ulang paket/perakitan.
  4. Buat penyesuaian kode yang diperlukan.
  5. Uji ekstensi Visual Studio 2022 Anda.
  6. Terbitkan ekstensi Visual Studio 2022 Anda.

Ekstensi tanpa menjalankan kode

Ekstensi yang tidak berisi kode yang sedang berjalan (misalnya, templat proyek atau item) tidak diperlukan untuk mengikuti langkah-langkah sebelumnya, termasuk produksi dua VSIX yang berbeda.

Sebagai gantinya, ubah satu VSIX sehingga filenya source.extension.vsixmanifest mendeklarasikan dua target penginstalan:

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

Anda dapat melewati langkah-langkah dalam artikel ini tentang menggunakan proyek bersama dan beberapa VSIX. Anda dapat melanjutkan pengujian.

Catatan

Jika Anda menulis ekstensi Visual Studio baru dengan menggunakan Visual Studio 2022, dan Anda juga ingin menargetkan Visual Studio 2019 atau versi yang lebih lama, lihat panduan ini.

Tugas MSBuild

Jika Anda menulis tugas MSBuild, ketahuilah bahwa di Visual Studio 2022, kemungkinan tugas tersebut akan dimuat dalam proses MSBuild.exe 64-bit. Jika tugas Anda memerlukan proses 32-bit untuk dijalankan, lihat Mengonfigurasi target dan tugas untuk memastikan bahwa MSBuild memuat tugas Anda dalam proses 32-bit.

Memodernisasi proyek VSIX Anda

Sebelum Anda menambahkan dukungan Visual Studio 2022 ke ekstensi Anda, kami sangat menyarankan Agar Anda membersihkan dan memodernisasi proyek yang ada:

  1. Migrasikan dari packages.config ke PackageReference.

  2. Ganti referensi rakitan Visual Studio SDK langsung dengan PackageReference item:

    -<Reference Include="Microsoft.VisualStudio.OLE.Interop" />
    +<PackageReference Include="Microsoft.VisualStudio.OLE.Interop" Version="..." />
    

    Tip

    Anda dapat mengganti banyak referensi perakitan hanya dengan satuPackageReference instans untuk metapackage:

    -<Reference Include="Microsoft.VisualStudio.OLE.Interop" />
    -<Reference Include="Microsoft.VisualStudio.Interop" />
    -<Reference Include="Microsoft.VisualStudio.Interop.8.0" />
    +<PackageReference Include="Microsoft.VisualStudio.Sdk" Version="..." />
    

    Pastikan untuk memilih versi paket yang cocok dengan versi minimum Visual Studio yang Anda targetkan.

Beberapa rakitan yang tidak unik untuk Visual Studio SDK (misalnya, Newtonsoft.Json.dll) mungkin dapat ditemukan melalui referensi sederhana <Reference Include="Newtonsoft.Json" /> sebelum Visual Studio 2022. Tetapi di Visual Studio 2022, mereka memerlukan referensi paket sebagai gantinya. Alasannya adalah bahwa beberapa runtime Visual Studio dan direktori SDK telah dihapus dari jalur pencarian rakitan default di MSBuild.

Dalam beralih dari referensi rakitan langsung ke referensi paket NuGet, Anda dapat mengambil referensi rakitan dan paket penganalisis tambahan karena NuGet secara otomatis menginstal penutupan dependensi transitif. Ini umumnya OK, tetapi mungkin mengakibatkan peringatan tambahan selama build Anda. Lakukan peringatan ini dan selesaikan sebanyak mungkin. Pertimbangkan untuk menggunakan wilayah dalam kode #pragma warning disable <id> untuk menekan peringatan yang tidak dapat Anda atasi.

Menggunakan proyek bersama untuk penargetan multi-penargetan

Proyek bersama adalah jenis proyek yang diperkenalkan di Visual Studio 2015. Proyek bersama di Visual Studio memungkinkan file kode sumber dibagikan antara beberapa proyek dan membangun secara berbeda dengan menggunakan simbol kompilasi bersyarah dan serangkaian referensi unik.

Visual Studio 2022 memerlukan serangkaian rakitan referensi yang berbeda dari semua versi Visual Studio sebelumnya. Jadi kami sarankan Anda menggunakan proyek bersama untuk dengan mudah menargetkan ekstensi Anda ke Visual Studio 2022, versi yang lebih lama, dan versi yang lebih baru. Teknik ini akan memberi Anda berbagi kode tetapi referensi yang berbeda.

Dalam konteks ekstensi Visual Studio, Anda dapat memiliki satu proyek VSIX untuk Visual Studio 2022 dan yang lebih baru, dan satu proyek VSIX untuk Visual Studio 2019 dan yang lebih lama. Masing-masing proyek ini hanya source.extension.vsixmanifest akan berisi instans dan referensi paket ke SDK 16.x atau SDK 17.x. Proyek VSIX ini juga akan memiliki referensi proyek bersama ke proyek bersama baru yang akan menghosting semua kode sumber Anda yang dapat dibagikan di dua versi Visual Studio.

Bagian ini mengasumsikan bahwa Anda sudah memiliki proyek VSIX yang menargetkan Visual Studio 2019 dan Anda ingin ekstensi Anda berfungsi di Visual Studio 2022.

Anda dapat menyelesaikan semua langkah ini dengan menggunakan Visual Studio 2019:

  1. Jika Anda belum melakukannya, modernisasi proyek Anda untuk memudahkan langkah-langkah nanti dalam proses pembaruan ini.

  2. Tambahkan proyek bersama baru ke solusi Anda untuk setiap proyek yang ada yang mereferensikan Visual Studio SDK. Klik kanan solusi, lalu pilih Tambahkan>Proyek Baru.

    Screenshot that shows the selections for adding a new project.

  3. Dalam dialog Tambahkan proyek baru, cari proyek bersama, lalu pilih templat Proyek Bersama.

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

  4. Tambahkan referensi dari setiap proyek referensi Visual Studio SDK ke rekan proyek bersamanya.

    Screenshot that shows selections for adding a shared project reference.

  5. Pindahkan semua kode sumber (termasuk file .cs dan .resx ) dari setiap proyek referensi Visual Studio SDK ke rekan proyek bersamanya. Biarkan file source.extension.vsixmanifest dalam proyek VSIX.

    Screenshot that shows a shared project containing all source files.

  6. Pindahkan file metadata (misalnya, catatan rilis, lisensi, dan ikon) dan file VSCT ke direktori bersama. Kemudian tambahkan sebagai file tertaut ke proyek VSIX. Perhatikan bahwa direktori bersama terpisah dari proyek bersama.

    Screenshot that shows selections for adding metadata and V S C T files as linked files.

    • Untuk file metadata, atur Tindakan Build ke Konten. Atur Sertakan dalam VSIX ke True.

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

    • Untuk file VSCT, atur Build Action ke VSCTCompile. Atur Sertakan dalam VSIX ke False.

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

      Jika Visual Studio mengeluh bahwa pengaturan ini tidak didukung, Anda dapat mengubah tindakan build secara manual dengan membongkar proyek dan mengubah Content ke 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. Bangun proyek Anda untuk mengonfirmasi bahwa Anda belum memperkenalkan kesalahan apa pun.

Proyek Anda sekarang siap untuk menambahkan dukungan Visual Studio 2022.

Menambahkan target Visual Studio 2022

Bagian ini mengasumsikan bahwa Anda telah menyelesaikan langkah-langkah untuk memperhitungkan ekstensi Visual Studio Anda dengan proyek bersama.

Tambahkan dukungan Visual Studio 2022 ke ekstensi Anda dengan menggunakan langkah-langkah berikut. Anda dapat menyelesaikannya dengan menggunakan Visual Studio 2019.

  1. Tambahkan proyek VSIX baru ke solusi Anda. Proyek ini akan menargetkan Visual Studio 2022. Hapus kode sumber apa pun yang disertakan dengan templat, tetapi simpan file source.extension.vsixmanifest .

  2. Pada proyek VSIX baru Anda, tambahkan referensi ke proyek bersama yang sama dengan referensi VSIX penargetan Visual Studio 2019 Anda.

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

  3. Verifikasi bahwa proyek VSIX baru dibangun dengan benar. Anda mungkin perlu menambahkan referensi agar sesuai dengan proyek VSIX asli Anda untuk mengatasi kesalahan pengkompilasi apa pun.

  4. Untuk ekstensi Visual Studio terkelola, perbarui referensi paket Anda dari 16.x (atau yang lebih lama) ke versi paket 17.x di file proyek yang ditargetkan Visual Studio 2022 Anda. Gunakan NuGet Package Manager atau langsung edit file proyek:

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

    Versi yang ditampilkan dalam kode sebelumnya hanya untuk demonstrasi. Dalam kode Anda, gunakan versi yang tersedia dari situs web NuGet.

    Dalam banyak kasus, ID paket telah berubah. Untuk daftar perubahan di Visual Studio 2022, lihat tabel pemetaan paket/perakitan.

    Ekstensi yang ditulis dalam C++ belum memiliki SDK yang tersedia untuk dikompilasi.

  5. Untuk proyek C++, ekstensi harus dikompilasi untuk AMD64. Untuk ekstensi terkelola, pertimbangkan untuk mengubah proyek Anda dari membangun CPU apa pun menjadi menargetkan x64. Perubahan tersebut memastikan bahwa di Visual Studio 2022, ekstensi Anda selalu dimuat dalam proses 64-bit. CPU apa pun juga baik-baik saja, tetapi mungkin menghasilkan peringatan jika Anda mereferensikan biner asli khusus x64.

    Dependensi apa pun yang mungkin dimiliki ekstensi Anda pada modul asli harus diperbarui dari gambar x86 ke gambar AMD64.

  6. Edit file source.extension.vsixmanifest Anda untuk mencerminkan penargetan Visual Studio 2022. Atur <InstallationTarget> tag untuk menunjukkan Visual Studio 2022. Atur ProductArchitecture elemen untuk menunjukkan payload AMD64.

    <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
       <ProductArchitecture>amd64</ProductArchitecture>
    </InstallationTarget>
    

    Penting

    Di Visual Studio 2019, perancang untuk file ini tidak mengekspos elemen baru ProductArchitecture . Anda perlu menggunakan editor XML untuk membuat perubahan ini. Untuk mengakses editor XML, buka Penjelajah Solusi dan pilih perintah Buka Dengan.

    Elemen ProductArchitecture ini sangat penting. Visual Studio 2022 tidak akan menginstal ekstensi Anda tanpa ekstensi tersebut.

    Elemen Nilai Deskripsi
    ProductArchitecture x86, amd64 Platform yang didukung VSIX ini. Tidak peka huruf besar/kecil. Gunakan satu platform per elemen, dan satu elemen per InstallationTarget instans. Untuk versi produk kurang dari 17.0, nilai defaultnya adalah x86 dan dapat dihilangkan. Untuk produk versi 17.0 dan yang lebih baru, elemen ini diperlukan, dan tidak ada nilai default. Untuk Visual Studio 2022, satu-satunya konten yang valid untuk elemen ini adalah amd64.
  7. Buat penyesuaian lain yang diperlukan di source.extension.vsixmanifest agar sesuai dengan penyesuaian yang menargetkan Visual Studio 2019 (jika ada).

    Jika Anda menerbitkan dua versi ekstensi yang masing-masing menargetkan versi Visual Studio yang berbeda, pastikan ID VSIX dalam Identity elemen manifes berbeda untuk setiap ekstensi.

Pada titik ini, Anda memiliki VSIX ekstensi yang ditargetkan Visual Studio 2022. Anda harus membuat proyek VSIX yang ditargetkan Visual Studio 2022 dan mengerjakan setiap jeda build yang muncul. Jika Anda tidak memiliki pemutusan build di proyek VSIX yang ditargetkan Visual Studio 2022, selamat! Anda siap untuk pengujian.

Menangani perubahan API yang melanggar

Perubahan API yang melanggar mungkin memerlukan pembaruan untuk kode yang berjalan pada versi Visual Studio yang lebih lama. Untuk tips tentang cara memperbarui kode Anda, lihat Melanggar perubahan API di Visual Studio 2022.

Saat Anda mengadaptasi kode, kami sarankan Anda menggunakan kompilasi bersyarah. Kode Anda kemudian dapat terus mendukung versi Visual Studio sebelumnya sambil menambahkan dukungan untuk Visual Studio 2022.

Saat Anda mendapatkan bangunan ekstensi yang ditargetkan Visual Studio 2022, lanjutkan ke pengujian.

Menggunakan simbol kompilasi bersyarah

Jika Anda ingin menggunakan kode sumber yang sama, bahkan file yang sama, untuk Visual Studio 2022 dan versi yang lebih lama, Anda mungkin perlu menggunakan kompilasi bersyarah. Anda kemudian dapat membuat fork kode Anda untuk beradaptasi dengan perubahan yang melanggar. Kompilasi kondisional adalah fitur bahasa C#, Visual Basic, dan C++. Ini dapat digunakan untuk berbagi sebagian besar kode sambil mengakomodasi API yang berbeda di tempat tertentu.

Untuk informasi selengkapnya tentang penggunaan arahan prapemrosan dan simbol kompilasi kondisional, lihat direktif praprosem C#.

Proyek Anda yang menargetkan versi Visual Studio sebelumnya akan memerlukan simbol kompilasi bersyarat. Simbol ini kemudian dapat digunakan untuk membuat fork kode untuk menggunakan API yang berbeda. Anda dapat mengatur simbol kompilasi kondisional pada halaman properti proyek:

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

Pastikan untuk mengatur simbol kompilasi untuk Semua Konfigurasi. Secara default, simbol yang Anda masukkan mungkin hanya berlaku untuk satu konfigurasi.

Teknik C#

Anda dapat menggunakan simbol kompilasi Sebagai arahan praprosesor (#if), seperti yang ditunjukkan dalam kode berikut. Anda kemudian dapat fork kode Anda untuk menangani perubahan yang melanggar antara versi Visual Studio.

    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

Dalam beberapa kasus, Anda dapat menggunakan var untuk menghindari penamaan jenis dan menghindari kebutuhan akan #if wilayah. Cuplikan sebelumnya juga dapat ditulis sebagai:

    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);

Saat Anda menggunakan sintaksis #if , perhatikan bagaimana Anda dapat menggunakan daftar dropdown untuk konteks layanan bahasa untuk mengubah penyorotan sintaks. Daftar dropdown lainnya membantu layanan bahasa untuk memfokuskan perhatian pada satu target versi Visual Studio untuk ekstensi ini versus yang lain.

Screenshot that shows conditional compilation in a shared project.

Teknik berbagi XAML

XAML tidak memiliki prapemroses untuk memungkinkan penyesuaian konten berdasarkan simbol prapemrosesan. Anda mungkin perlu menyalin dan memelihara dua halaman XAML yang kontennya berbeda antara Visual Studio 2022 dan versi yang lebih lama.

Dalam beberapa kasus, referensi ke jenis yang ada dalam rakitan yang berbeda di seluruh Visual Studio 2022 dan versi sebelumnya mungkin masih dapat diwakili dalam satu file XAML. Hapus namespace layanan yang mereferensikan rakitan:

-xmlns:vsui="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.14.0"
-Value="{DynamicResource {x:Static vsui:TreeViewColors.SelectedItemActiveBrushKey}}"
+Value="{DynamicResource TreeViewColors.SelectedItemActiveBrushKey}"

Menguji ekstensi Anda

Untuk menguji ekstensi yang menargetkan Visual Studio 2022, Anda harus menginstal Visual Studio 2022. Anda tidak akan dapat menjalankan ekstensi 64-bit pada versi Visual Studio yang lebih lama.

Anda dapat menggunakan Visual Studio 2022 untuk membangun dan menguji ekstensi Anda apakah mereka menargetkan Visual Studio 2022 atau versi yang lebih lama. Saat Anda membuka proyek VSIX dari Visual Studio 2022, instans eksperimental Visual Studio terbuka.

Kami sangat menyarankan Agar Anda menguji dengan setiap versi Visual Studio yang Anda inginkan untuk didukung ekstensi.

Mempublikasikan ekstensi Anda

Anda telah menambahkan target Visual Studio 2022 ke ekstensi Anda dan mengujinya. Sekarang Anda siap untuk menerbitkan ekstensi bagi dunia untuk dikagumi.

Visual Studio Marketplace

Menerbitkan ekstensi Anda ke Visual Studio Marketplace adalah cara yang bagus untuk membuat pengguna baru menemukan dan menginstal ekstensi Anda. Baik ekstensi Anda menargetkan Visual Studio 2022 secara eksklusif atau menargetkan versi Visual Studio yang lebih lama juga, Marketplace juga ada untuk mendukung Anda.

Di masa mendatang, Marketplace akan memungkinkan Anda mengunggah beberapa VSIX hanya ke satu daftar Marketplace. Anda kemudian dapat mengunggah VSIX yang ditargetkan Visual Studio 2022 dan VSIX untuk versi Visual Studio yang lebih lama. Pengguna Anda akan secara otomatis mendapatkan VSIX yang tepat untuk versi Visual Studio yang telah mereka instal, saat mereka menggunakan manajer ekstensi Visual Studio.

Penginstal kustom

Jika Anda membuat file MSI atau EXE untuk menginstal ekstensi dan menelurkan vsixinstaller.exe untuk menginstal (bagian dari) ekstensi Anda, ketahuilah bahwa penginstal VSIX di Visual Studio 2022 telah diperbarui. Pengembang perlu menggunakan versi alat penginstal VSIX yang dilengkapi dengan Visual Studio 2022 untuk menginstal ekstensi ke versi Visual Studio tersebut.

Penginstal VSIX di Visual Studio 2022 juga menginstal ekstensi yang berlaku yang menargetkan versi Visual Studio sebelumnya yang ada dengan Visual Studio 2022 pada komputer yang sama.

Berbagi jaringan

Anda dapat berbagi ekstensi Anda melalui LAN atau dengan cara lain. Jika Anda menargetkan Visual Studio 2022 dan versi yang lebih lama, Anda perlu berbagi beberapa VSIX satu per satu. Beri mereka nama file (atau letakkan di folder unik) yang membantu pengguna Anda mengetahui VSIX mana yang akan diinstal berdasarkan versi Visual Studio yang telah mereka instal.

Dependensi

Jika VSIX Anda menentukan VSIX lain sebagai dependensi melalui <dependency> elemen , setiap VSIX yang dirujuk perlu diinstal dalam target dan arsitektur produk yang sama dengan VSIX Anda. Jika VSIX dependen tidak mendukung penginstalan Visual Studio yang ditargetkan, VSIX Anda akan gagal.

Tidak apa-apa bagi VSIX dependen untuk mendukung lebih banyak target dan arsitektur daripada target Anda, hanya saja tidak kurang. Pembatasan ini berarti bahwa pendekatan penyebaran dan distribusi VSIX dengan dependensi harus mencerminkan dependennya.

T & J

T: Ekstensi saya tidak memerlukan perubahan interoperabilitas karena hanya menyediakan data (misalnya, templat). Bisakah saya membuat satu ekstensi yang juga menyertakan Visual Studio 2022?

A: Ya! Lihat Ekstensi tanpa menjalankan kode untuk informasi tentang hal ini.

T: Dependensi NuGet membawa rakitan interoperabilitas lama dan menyebabkan kelas bentrok. Apa yang harus saya lakukan?

J: Tambahkan baris berikut ke file .csproj Anda untuk menghindari rakitan duplikat:

    <PackageReference Include="<Name of offending assembly>" ExcludeAssets="compile" PrivateAssets="all" />

Kode ini akan mencegah referensi paket mengimpor versi lama rakitan dari dependensi lain.

T: Perintah dan hotkey saya berhenti berfungsi di Visual Studio setelah saya mengalihkan file sumber saya ke proyek bersama. Apa yang harus saya lakukan?

J: Langkah 2.4 dari sampel Pengoptimal Gambar menunjukkan cara menambahkan file VSCT sebagai item tertaut sehingga dikompilasi ke dalam file VSCT Anda.

Ikuti contoh langkah demi langkah, ImageOptimizer, dengan tautan ke proyek dan perubahan kode untuk setiap langkah.