Bagaimana saya bisa kembali ke referensi paket Nuget di packages.config setelah menggunakan Referensi Paket di proyek .NET Standard?

Jul 21 2017

Latar Belakang

Saya memiliki beberapa pustaka kode C # yang baru-baru ini saya ubah menjadi target .NET Standard 1.4, untuk digunakan dalam proyek Xamarin Forms serta banyak proyek warisan .NET Framework 4.6.1.

Saya awalnya menambahkan paket Nuget ke perpustakaan kelas .NET Standard menggunakan Referensi Paket dalam gaya File Proyek .

Setelah mempelajari bug ini di mana referensi paket transitif dari proyek .NET Standard tidak diselesaikan dalam proyek .NET Framework warisan , saya mencoba solusi untuk menambahkan <RestoreProjectStyle>PackageReference</RestoreProjectStyle>ke csproj proyek warisan. Proyek warisan terus tidak menyelesaikan referensi transitif- artinya, solusi tersebut tidak berhasil.

Jadi, saya ingin kembali ke gaya lama mereferensikan paket Nuget dalam file packages.config dalam proyek .NET Standard saya.

Langkah-langkah yang saya ikuti:

  • Menghapus semua paket Nuget di proyek .NET Standard, kecuali NETStandard.Library yang tidak dapat dihapus instalasinya
    • Pengaturan standar VS saya untuk Nuget adalah menambahkan paket pertama dalam solusi untuk packages.config
  • Menginstal ulang paket Nuget dari Manage Nuget Packagesjendela alat
    • Paket ini ditempatkan di csproj sebagai a PackageReference, bukan di file packages.config.

Adakah yang tahu bagaimana saya dapat memaksa paket Nuget baru dalam proyek .NET Standard 1.4 saya untuk dicantumkan packages.configalih-alih sebagai Referensi Paket?

Jawaban

13 BenV May 23 2018 at 14:06

Selain menghapus PackageReferences dari file proyek, saya juga harus menghapus file berikut dari $ProjectDir\objdirektori:

  • Myproject.csproj.nuget.cache
  • Myproject.csproj.nuget.g.props
  • Myproject.csproj.nuget.g.t ​​target
  • project.assets.json
2 PauloPozeti Nov 17 2018 at 14:28

Cara memutar kembali ke packages.config

  1. Tutup proyek yang dimigrasi.

  2. Salin file proyek dan packages.config dari cadangan (biasanya \ MigrationBackup \\) ke folder proyek. Hapus folder obj jika ada di direktori root proyek.

  3. Buka proyek.

  4. Buka Package Manager Console menggunakan perintah menu Tools> NuGet Package Manager> Package Manager Console.

  5. Jalankan perintah berikut di Konsol:

    perbarui-paket-instal ulang

Sumber: https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference#how-to-roll-back-to-packagesconfig

2 yww325 Jan 29 2019 at 19:59
  1. hapus semua PackageReference di file proyek.
  2. menghapus semua cache di $ ProjectDir \ obj.
  3. tambahkan file packages.config kosong (dengan tag root) kembali ke proyek.
  4. membangun kembali proyek. Studio visual kemudian akan menanyakan apa yang hilang.
  5. kemudian tambahkan paket versi yang Anda pilih dengan menggunakan nuget manager.
  6. ulangi langkah 4 dan 5, VS akan menambahkan referensi Anda satu per satu kembali ke file packages.config.
WesHaggard Jul 21 2017 at 22:36

Jika Anda belum melakukannya, Anda perlu menghapus properti ini: <RestoreProjectStyle>PackageReference</RestoreProjectStyle>

Dan kemudian hapus PackageReferences apa pun di proyek Anda. Kemudian ketika Anda menambahkan referensi paket nuget, mereka harus masuk ke file package.config.