Saya menggunakan Visual Studio 2017 dan mencoba membuat pustaka .Net Standard 1.5 dan menggunakannya dalam proyek uji .Net 4.6.2 nUnit.
Saya mendapatkan kesalahan berikut ...
Tidak dapat memuat file atau rakitan 'System.Runtime, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dependensinya. Sistem tidak dapat menemukan berkas yang dicari.
Saya telah mencoba yang berikut ini:
- Referensi perpustakaan Std sebagai referensi proyek. Kesalahan: memberi saya kesalahan sebelumnya.
- Buat pkg NuGet untuk perpustakaan Std saya dan rujuk itu. Kesalahan: Jenisnya adalah System.String, mengharapkan System.String. Ini karena System.Runtime akhirnya direferensikan oleh proyek dan memiliki definisi untuk semua tipe standar.
- Referensi NuGet pkg NetStandard.Library. Kesalahan: beri saya kesalahan yang sama dengan # ("Jenisnya adalah System.String, mengharapkan System.String"). CATATAN: Sebelum saya melakukan ini, saya menghapus SEMUA paket NuGet dari proyek dan kemudian menambahkan hanya paket nUnit dan NetStandard.Library (yang menginstal 45 paket lain).
Apakah ini bug? Apakah ada solusi? Bantuan apa pun dihargai.
[MSTest][Discovery] Failed to discover tests from assembly Reason:Could not load file or assembly 'System.Reflection, Version=4.1.1.0 etc
Masalah ini terjadi saat Anda mereferensikan proyek .NET Standard dari proyek .NET 4.x: tidak ada referensi paket nuget proyek .NET Standard yang dibawa sebagai dependensi.
Untuk memperbaikinya, Anda perlu memastikan file csproj .NET 4.x Anda mengarah ke alat build saat ini (setidaknya 14):
Di bawah ini seharusnya tidak lagi diperlukan, sudah diperbaiki sekitar VS 15.3:
Ada bug yang diketahui di VS2017, khususnya di NuGet 4.0.
Untuk mengatasi bug tersebut, Anda harus membuka file .csproj untuk proyek .NET 4.x Anda dan menambahkan cuplikan ini:
NuGet 4.x membawa serta "referensi paket" - tidak ada lagi paket.config - tetapi pipeline 4.x lama tidak diperbarui sepenuhnya pada saat peluncuran VS2017. Cuplikan di atas tampaknya "membangunkan" sistem build untuk menyertakan referensi paket dari dependensi dengan benar.
sumber
Saya mengalami masalah ini baru-baru ini dan saya mencoba banyak hal yang disebutkan di utas ini dan lainnya. Saya menambahkan referensi paket untuk
"System.Runtime"
oleh manajer paket nuget, memperbaiki perintah pengikatanapp.config
, dan memastikan bahwaapp.config
danpackage.config
memiliki versi yang sama untuk perakitan. Namun, masalahnya tetap ada.Akhirnya, saya menghapus
<dependentAssembly>
tag untuk perakitan dan masalah menghilang. Jadi, coba hapus yang berikut ini diapp.config
.Sunting: Setelah saya memperbarui .NET framework ke 4.7.2, masalah muncul kembali. Saya mencoba trik di atas tetapi tidak berhasil. Setelah membuang waktu berjam-jam, saya menyadari masalahnya terjadi karena
System.Linq
referensi lama di app.config. Oleh karena itu, hapus atau perbarui semua referensi Linq juga untuk menghilangkan masalah ini.sumber
xunit System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0
setelah meningkatkan proyek saya ke 4.7.2Percayalah, saya tidak bercanda. Hapus semua dependensi System.Runtime dari app.config Anda dan itu akan mulai berfungsi.
sumber
Saya mengatasi kesalahan itu dengan mereferensikan NetStandard.Library dan File app.config berikut di NUnit-Project.
Edit
Jika ada selain
System.Runtime
,System.Reflection
atauSystem.Runtime.InteropServices
hilang (misalnyaSystem.Linq
), maka tambahkan sajadependentAssembly
node baru .Edit 2
Dalam Versi Visual Studio baru (2017 15.8 saya pikir) mungkin Studio membuat File app.config. Cukup centang kotak centang Auto-generate binding redirects di Project-Properties - Application .
Edit 3
Pengalihan pengikatan yang dibuat secara otomatis tidak bekerja dengan baik dengan Perpustakaan Kelas .NET. Menambahkan baris berikut ke file csproj menyelesaikan ini dan file .config yang berfungsi untuk Classlibary akan dibuat.
sumber
<dependentAssembly>
node untuk System.Runtime ..Saya memperbaikinya dengan menghapus
app.config
denganentri.
app.config
ditambahkan secara otomatis (tetapi tidak diperlukan) selama pemfaktoran ulangsumber
Masalah ini terjadi saat Anda mereferensikan proyek .NET Standard dari proyek .NET 4.x: tidak ada referensi paket nuget proyek .NET Standard yang dibawa sebagai dependensi.
Saya menyelesaikannya dengan menambahkan
4.3
paket System.Runtime dan NETStandard.Library dan !! penting !! Saya menggunakan alat refactor untuk mencari versi System.Runtime.dll,4.1.1.1
bukan4.3
dan kemudian menambahkan bindingRedirect di .configsumber
sudah terlambat saya tahu, namun tidak ada jawaban yang berhasil. Saya menemukan jawabannya dari situs web lain. Saya memperbaiki masalah ketika saya menghapus ketergantungan perakitan System.Runtime. Saya menghapus ini.
<dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/> </dependentAssembly>
Salam Hormat
sumber
Saya memiliki masalah dengan ini di proyek NUnit 2.6.4 yang menargetkan kerangka dotnet 4.6.2. Saya mengalami
System.Runtime FileNotFound
kesalahan itu saat mencoba menggunakan Humanizer .Saya memperbaiki kesalahan saya dengan menginstal NetStandard.Library ke dalam proyek pengujian unit saya.
sumber
Kami telah menemukan bahwa
AutoGenerateBindingRedirects
mungkin menyebabkan masalah ini.Teramati: penargetan proyek yang sama
net45
dannetstandard1.5
berhasil dibangun di satu mesin dan gagal membangun di yang lain. Mesin memiliki versi berbeda dari kerangka kerja yang diinstal (4.6.1 - berhasil dan 4.7.1 - gagal). Setelah meningkatkan framework pada mesin pertama ke 4.7.1, build juga gagal.Auto binding redirects
adalah fitur dari.net 4.5.1
. Setiap kali nuget mendeteksi bahwa proyek secara transitif mereferensikan versi yang berbeda dari rakitan yang sama, nuget akan secara otomatis menghasilkan file konfigurasi di direktori keluaran yang mengarahkan semua versi ke versi tertinggi yang diperlukan.Dalam kasus kami, pengikatan ulang semua versi
System.Runtime
menjadiVersion=4.1.0.0
..net 4.7.1
dikirimkan dengan4.3.0.0
versi runtime. Jadi, pengikatan pengalihan adalah pemetaan ke versi yang tidak tersedia dalam versi kerangka kerja kontemporer.Masalahnya telah diperbaiki dengan menonaktifkan pengalihan pengikatan otomatis untuk target 4.5 dan membiarkannya hanya untuk inti .net.
sumber
Masalah ini memiliki banyak penyebab ... dalam kasus saya masalahnya adalah yang ada di web saya.config tag menambahkan perakitan System.Runtime:
tetapi satu paket juga menambahkan perakitan yang sama sebagai ketergantungan dengan versi lain:
menghapus tag "tambahkan perakitan" dari web.config saya menyelesaikan masalah.
sumber
Sepertinya masalah ini disebabkan ketika ada konflik versi antara packages.config dan app.config. Di app.config Anda memiliki pengalihan pengikatan assembly yang secara otomatis dihasilkan oleh hal yang disebut "AutoGenerateBindingRedirects". Ketika diaktifkan setiap kali Anda mengunduh paket nuget, itu akan, selain membuat entri baru di packages.config, menambahkan informasi pengalihan mengikat ini ke app.config, apa tujuannya dijelaskan di sini: Pengalihan Pengikatan Majelis: Bagaimana dan Mengapa?
Di sana Anda dapat membaca apa yang ditulis pengguna @Evk:
Jadi, PERBAIKAN CEPAT: Hapus semua entri di app.config.
Dalam kasus saya, hanya dengan melakukan program itu mulai bekerja, tetapi mungkin hanya akan berfungsi jika Anda tidak memiliki konflik versi dari rakitan yang sama saat runtime.
Jika Anda memiliki konflik seperti itu, Anda harus memperbaiki nomor versi ini di app.config agar sesuai dengan versi rakitan yang benar-benar digunakan, tetapi proses manual itu menyakitkan, jadi saya sarankan untuk membuatnya secara otomatis lagi dengan membuka Konsol Pengelola Paket dan melakukan penginstalan ulang paket dengan mengetik
Update-Package -reinstall
sumber
Saya berakhir dalam situasi ini beberapa kali dengan situs web .NET 4.6.1 saya. Saya membuat masalah setiap kali saya menambahkan referensi ke proyek .NET Core terpisah. Setelah membangun, Visual Studio dengan benar memberitahu saya bahwa referensi lintas kerangka tersebut tidak valid, dan saya segera menghapus referensi proyek tersebut. Proyek dibangun dengan baik setelah itu, tetapi kesalahan System.Runtime muncul saat mengakses situs web dan menolak untuk pergi.
Perbaikannya setiap kali timpang tetapi efektif: Saya menghapus direktori proyek dan mengunduhnya kembali dari kontrol sumber. Meskipun tidak ada perbedaan antara sebelum dan sesudah, saya dapat membangun proyek dan mengakses halaman tanpa keluhan.
sumber
Mengalami ini sekarang di proyek Unit Test setelah menambahkan MsTest V2 melalui Nuget. Mengganti nama app.config (menghapusnya dengan sangat efektif) berhasil bagi saya.
Setelah membaca semua posting di atas, saya masih tidak yakin mengapa, maaf!
sumber
Saya memperbaiki masalah dengan menghapus Paket Nuget
System.Runtime
dan menginstalnya kembalisumber
Ke app.config atau web.config tambahkan
sumber
Saya punya proyek dengan masalah yang sama, saya menyelesaikannya dengan mengubah versi inti dotnet dari 2.2 ke 2.0, Jika masalah Anda tetap ada, Coba solusi ini
sumber
Sebelum menjalankan pengujian unit, hapus saja tag runtime dari file app.config. Masalah akan terpecahkan.
sumber
Saya memiliki masalah serupa di VS 2017 15.45 - Saya menemukan ketika saya memeriksa bahwa meskipun proyek dikompilasi dan menjalankannya muncul dengan system.IO.FileNotFoundException berkenaan dengan System.Runtime ketika saya mencoba mengakses objek TPL Dataflow.
Ketika saya memeriksa proyek dalam solusi, salah satunya (yang teratas) tidak memiliki paket System.Runtime yang digunakan oleh proyek yang mendasarinya. Setelah saya menginstalnya dari Nuget, semuanya bekerja dengan benar.
sumber
Saya mencoba semua solusi di sini, tetapi tidak berhasil. Akhirnya, saya menyelesaikannya dengan membuka file csproj baru dan secara manual menambahkan bagian berikut:
sumber
Saya menggunakan ASP.Net CORE 2.1 dan saya mendapatkan kesalahan ini ketika saya menjalankan dengan memilih .csproj dari daftar sekitar 40 di repo besar. Ketika saya membuka file csproj satu per satu, kesalahan telah teratasi. Sesuatu dengan bagaimana program diluncurkan berbeda ketika csproj dibuka.
sumber
Saya mengatasi masalah ini dengan beralih dari .NET 4.7.2 => .NET 4.5.2 dan kemudian beralih kembali ke 472. Jadi dalam beberapa kasus, kesalahan ini terjadi karena manajer paket tidak dapat menyelesaikan ketergantungan
sumber
Jika sebelumnya berfungsi, maka harus ada perubahan App.config. Urungkan App.config berhasil untuk saya.
sumber
Saya juga telah melalui kesalahan ini dan membagikan bagaimana saya menyingkirkannya.
Dalam kasus saya, baris di bawah ini ada di web.config dari proyek webapi tetapi tidak ada referensi paket di file package.config.
Kode di Web.config di Proyek Webapi
Kode I Ditambahkan dalam file packages.config dalam proyek api web Sebelum menutup elemen.
Solusi Lain Berhasil dalam Kasus Saya:
Tentu singkat lain yang dapat berfungsi jika Anda menyalin proyek ke sistem Komputer lain yang mungkin memiliki versi paket yang sedikit berbeda sehingga Anda dapat mencoba mengubah versi rakitan ke versi yang diberikan dalam kesalahan di situs web / webapi saat Anda menjalankannya. Seperti dalam kasus ini seperti yang diberikan dalam pertanyaan Versi yang dibutuhkan adalah '4.1.0.0' jadi cukup coba ubah versi saat ini di web.config ke versi yang ditunjukkan dalam kesalahan seperti di bawah ini
Kesalahan:
sumber
Saya mengalami kesalahan ini ketika membangun Fungsi Azure (dengan pemicu antrian, jika itu membuat perbedaan)
Masalah dalam kasus ini adalah karena
AzureFunctionsVersion
disetel ke v2, bukan v3. Untuk memperbaruinya melalui VS2019, keluarkan proyek lalu edit file csproj. Di dalamPropertyGroup
node, tambahkan / edit berikut ini:sumber