Saya mendapatkan Kesalahan
System.IO.FileLoadException: Tidak dapat memuat file atau rakitan 'Newtonsoft.Json, Versi = 4.5.0.0, Budaya = netral, PublicKeyToken = 30ad4fe6b2a6aeed' atau salah satu dari dependensinya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040)
untuk membangun CI saya
Solusi yang saya coba
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Itu juga tidak berhasil
Jawaban:
Dalam paket manager konsol mengeksekusi:
Update-Package –reinstall Newtonsoft.Json
.MEMPERBARUI
Saya awalnya memposting ini sebagai komentar tetapi sebagai @OwenBlacker menyarankan saya akan taruh di sini:
Jika Anda masih mendapatkan kesalahan setelah melakukan ini, maka apa yang akhirnya berhasil bagi saya adalah saya menghapus
<dependentAssembly>
bagian Json.Net dari.config
file saya . Instal ulang mengembalikannya jika tidak ada dan tampaknya Anda harus menghapusnya. Sampai akan ada solusi normal dalam paket itu sendiri, saya khawatir langkah manual ini adalah suatu keharusan.Catatan: Silakan baca komentar di bawah sebelum melakukan ini.
Sesuai komentar René di bawah ini Sadarilah bahwa perintah yang diposting di jawaban akan menginstal ulang paket di setiap proyek dalam solusi Anda. Jadi, jika Anda menggunakan paket Newtonsoft.Json di beberapa proyek dan mungkin menggunakan versi yang berbeda, hanya menjalankan perintah di atas mungkin memiliki konsekuensi yang tidak diinginkan.
sumber
<dependentAssembly>
bagian Json.Net dari.config
file saya . Instal ulang mengembalikannya jika tidak ada dan tampaknya Anda harus menghapusnya. Sampai akan ada solusi normal dalam paket itu sendiri, saya khawatir langkah manual ini adalah suatu keharusan.Untuk semua orang yang memiliki masalah dengan versi Newtonsoft.Json v4.5 coba gunakan ini di web.config atau app.config:
PENTING : Pastikan
configuration
tag file konfigurasi Anda tidak memiliki atribut namespace (seperti yang disarankan dalam https://stackoverflow.com/a/12011221/150370 ). Jika tidak,assemblyBinding
tag akan diabaikan.sumber
newVersion="6.0.0.0"
harus diubah kenewVersion="7.0.0.0"
atau versi apa pun yang Anda gunakanPoin kuncinya adalah mereferensikan versi yang benar dalam file konfigurasi Anda.
Langkah;
1- Lihat apa versi Newtonsoft.Json.dll Anda di properti referensi proyek, apa pun versi dalam folder paket Anda (Misalnya milik saya 7.0.1 dan Versi referensi 7.0.0.0)
2- lihat apa yang diharapkan proyek dari Anda dalam pengecualian (milik saya 6.0.0.0)
3- Tambahkan rakitan dependen ke file konfigurasi Anda sebagaimana mestinya ..
sumber
Saya tidak beruntung dengan solusi yang disajikan di sini (mencopot, menginstal ulang, menghapus referensi, membuat bindingRedirect dll.) Saya harus kembali ke versi lama dari Newtonsoft. Versi 5.0.6 sudah berfungsi sebelumnya, jadi saya mencobanya. Saya harus memasukkan dua perintah ini di Package Console:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json -version "5.0.6"
The
-force
pilihan dalam perintah pertama diperlukan untuk memaksa uninstall. Ketergantungan dengan majelis lain mencegah penghapusan instalasi tanpa itu.sumber
Saya memperbaiki masalah dengan menambahkan pengalihan yang mengikat ini ke file .config saya:
Pesan kesalahan mengeluh tentang tidak menemukan versi 4.5.0.0, versi Newtonsoft.Json saat ini adalah 6.0.0.0 sehingga redirect harus dari 4.5 ke 6.0, bukan sebaliknya
sumber
Saya pikir Anda menunjuk ke target yang salah, ubah ke 4.5 bukan 6.0
Ini seharusnya bekerja.
sumber
Saya telah menghabiskan beberapa hari mencoba menyelesaikan masalah yang membuat frustrasi ini. Saya sudah mencoba hampir semua yang dapat ditemukan di web. Akhirnya saya menemukan bahwa kesalahan ini dapat disebabkan (seperti dalam kasus saya) oleh target yang berbeda. Versi proyek Net (4.5 dan 4.5.1) dalam satu solusi. Langkah-langkah di bawah ini memperbaikinya untuk saya:
Properties
.Jika mungkin atur versi .Net yang sama untuk semua proyek. Jika tidak, setidaknya cobalah untuk mengubah satu proyek Startup (bagi saya ini adalah yang menyebabkan masalah).
Hapus semua
Newtonsoft.Json
paket dari solusi.uninstall-package newtonsoft.json -force
Perbarui semua
Newtonsoft.Json
versi di semuapackages.config
file, seperti itu<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
Instal ulang
Newtonsoft.Json
dari "Package Manager Console" dengan:install-package newtonsoft.json
Bangun kembali solusi
(Opsional) 7. Jika Anda mengubah proyek Startup, kembalikan lagi
sumber
Apakah trik untuk saya :)
sumber
jika Anda menggunakan beberapa proyek dalam solusi yang sama dan pustaka satu cek lainnya adalah semua proyek memiliki versi Newtonsoft.Json yang sama
sumber
Hapus perakitan Newtonsoft.Json dari referensi proyek dan tambahkan lagi. Anda mungkin menghapus atau mengganti dll secara tidak sengaja.
sumber
Saya sedang menulis klien layanan WebApi REST, jadi bagi saya kesalahan ini disebabkan oleh menambahkan Referensi ke
System.Net.Http
danSystem.Net.Http.Formatting
berkumpul secara manual melalui Tambah Referensi, ketika saya seharusnya menambahkanMicrosoft.AspNet.WebApi.Client
paket melalui NuGet . Lihat juga jawaban ini untuk pertanyaan lain .sumber
Anda memiliki 2 versi perpustakaan JSON.NET yang berbeda dalam solusi Anda. Untuk mengatasi ini, Anda harus memutakhirkannya ke versi terbaru. Ikuti langkah ini:
Penjelajah solusi 1-Terbuka 2-Klik kanan pada nama solusi 3-Pilih Kelola Paket Nuget untuk Solusi 4-Pilih Pembaruan dari menu 5-Perbarui paket JSON.NET
Ini akan menyelesaikan masalah Anda.
tautan: Tidak dapat memuat file atau rakitan 'Newtonsoft.Json, Versi = 7.0.0.0, Kultur = netral, PublicKeyToken = 30ad4fe6b2a6aeed' atau salah satu dari dependensinya
sumber
Menyebarkan versi yang benar ke mesin CI
Ini memberitahu Anda bahwa loader perakitan menemukan versi
Newtonsoft.Json
perakitan yang berbeda, yang tidak cocok dengan referensi yang Anda buat di proyek Anda. Untuk memuat rakitan dengan benar, Anda harus menggunakan rakitan berdampingan dengan kode kompilasi Anda, atau menginstal versi rakitan yang benar di mesin tujuan (yaitu di GAC).Alternatif: pastikan konfigurasi dalam file yang benar
Jika Anda ingin menyimpan solusi saat ini, dan memuat perakitan dengan versi yang berbeda, pastikan bahwa konfigurasi yang Anda posting ada di
.config
file yang benar . Ingat bahwa tidak adaxpto.dll.config
, DLL yang dimuat oleh aplikasi selalu menggunakan file konfigurasi aplikasi yang sedang berjalan.sumber
Biasanya menambahkan pengalihan yang mengikat harus menyelesaikan masalah ini, tetapi itu tidak berhasil untuk saya. Setelah beberapa jam membenturkan kepala ke dinding, saya menyadari bahwa ada atribut xmlns yang menyebabkan masalah di web.config saya. Setelah menghapus atribut xmlns dari node konfigurasi di Web.config, pengalihan yang mengikat berfungsi seperti yang diharapkan.
http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx
sumber
Bekerja untuk saya .... cukup masukkan versi yang Anda gunakan di newVersion yaitu (newVersion = "7.0.0.0")
sumber
Tutup solusi.
Buka
packages.config
dan*.csproj
dengan editor teks dan hapus baris yang memiliki Newtonsoft.JsonEx:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>
Atau
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
Buka solusi lagi dan instal kembali Newtonsoft.Json oleh
Install-Package Newtonsoft.Json
Ini bekerja untuk saya.
sumber
Kami memiliki masalah yang sama persis dengan yang Anda sebutkan. Kami menggunakan nunit untuk menjalankan tes melalui CI, dan kami memiliki nunit menjalankan file yang disebut tests.nunit, yang menggambarkan daftar perlengkapan dll uji untuk dijalankan.
Setiap perlengkapan tes memiliki file konfigurasi sendiri, tetapi ketika dijalankan melalui file "tests.nunit" pengalihan yang mengikat tampaknya diabaikan. Solusinya adalah menambahkan pengalihan yang mengikat ke file konfigurasi baru, "tests.config" yang ada di samping file "tests.nunit".
sumber
Saya memiliki masalah yang sama. Dan saya juga menyelesaikannya hanya dengan melakukan hal berikut: Pergi ke TOOLS > NuGet Package Manager dan Pilih Package Manager Console . Akhirnya, jalankan dua perintah berikut :)
sumber
Anda harus memperbarui file web.config di server. Ketika nuget menginstal NewtonSoft, perbarui file ini termasuk kode ini
sumber
Cukup periksa versi properti Newtonsoft.Json Newtonsoft
Maka Anda perlu menambahkan versi itu di konfigurasi web Anda (dalam kasus saya 8.0.0.0) konfigurasi web
sumber
Saya membuat kesalahan dengan menambahkan file .dll NewtonSoft untuk .Net 4.5.
Proyek utama saya adalah 4,5, tetapi ketika saya menambahkan proyek tambahan untuk solusi saya, anehnya menambahkannya sebagai proyek .Net 2.0 ... dan ketika saya mencoba menggunakan 4,5 dll NewtonSoft dengan ini, saya mendapatkan ini "Newtonsoft.Json tidak bisa dapat ditemukan "kesalahan.
Solusinya (tentu saja) adalah mengubah proyek baru ini dari .Net 2.0 menjadi 4.5.
sumber
Dalam kasus saya, proyek utama masih merujuk pada versi lama dari Newtonsoft.Json yang tidak ada lagi dalam proyek (ditunjukkan oleh tanda seru berwarna kuning). Menghapus referensi memecahkan masalah, tidak ada bindingRedirect yang diperlukan.
sumber
Saya memiliki masalah yang sama persis dengan versi 7.0.0.0, dan lib yang menyebabkan masalah saya adalah Microsoft.Rest.ClientRuntime yang entah bagaimana merujuk ke versi yang salah (6.0.0.0) dari Newtonsoft.json, meskipun manajemen ketergantungan yang tepat di nugget ( versi newtonsoft.json yang tepat (7.0.0.0) telah diinstal).
Saya memecahkan ini dengan menerapkan pengalihan di atas dari 6.0.0.0 ke 7.0.0.0 (dari Kadir Can) dalam file konfigurasi:
----> Setelah beberapa hari tanpa mengubah apa pun, muncul lagi dengan kesalahan yang sama. Saya menginstal versi 6.0.0.0 dan memperbaruinya menjadi 7.0.0.0 berfungsi baik sekarang.
sumber
Dalam kasus saya, setelah mengunduh rakitan dan menambahkan referensi ke proyek, saya menyelesaikan ini dengan 'membuka blokir' DLL sebelum menambahkan referensi ke proyek.
Menggunakan Windows explorer, telusuri ke lokasi DLL, klik kanan pada DLL dan kemudian pilih 'properti'. Anda akan menemukan tombol 'unblock' di salah satu tab dan kemudian Anda dapat menambahkan referensi dan perakitan akan memuat dengan benar.
sumber
Tidak ada dari atas yang membantu saya, tetapi yang benar-benar memperbaikinya adalah sebagai berikut:
Dapatkan-Proyek -Semua | Add-BindingRedirect
Referensi: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
sumber
Klik kanan proyek Anda, pilih kelola paket Nuget, ketik newtonsoft di kotak pencarian dan instal versi terbaru. Kemudian Jalankan Aplikasi Anda
sumber
Saya menghadapi kesalahan yang sama dan berjuang selama berjam-jam. Saya punya proyek API web yang menggunakan Newtonsoft.json dan proyek UnitTest lain untuk proyek API web. Proyek unit test juga membutuhkan referensi Newtonsoft.json. Tetapi dengan menambahkan tautan saya mendapatkan pengecualian di atas.
Saya akhirnya menyelesaikannya dengan menambahkan potongan kode di bawah ini di app.config dari proyek unit test:
sumber
Masalah berbahaya lainnya adalah tampaknya pengalihan pengikatan dapat gagal secara diam-diam jika elemen tersebut memiliki konfigurasi yang salah pada elemen dependenAsembembel lainnya.
Pastikan Anda hanya memiliki satu elemen di bawah setiap elemen.
Dalam beberapa kasus, VS menghasilkan ini:
Dari pada
Butuh waktu lama bagi saya untuk menyadari bahwa inilah masalahnya!
sumber
Bagian di bawah ini menambahkan web.config Anda
sumber
Jika kesalahan menghilang secara lokal dan masih muncul di server, solusi yang bekerja dengan saya adalah menghapus folder bin dan paket.config dan web.config dan mengunggah ulang file-file ini
sumber