Tidak dapat memuat file atau perakitan atau salah satu dependensinya


238

Saya mengalami masalah "Tidak dapat memuat file atau perakitan atau salah satu dari dependensinya" yang lain.

Informasi tambahan: Tidak dapat memuat file atau rakitan 'Microsoft.Practices.Unity, Versi = 1.2.0.0, Culture = netral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dari ketergantungannya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040)

Saya tidak tahu apa yang menyebabkan ini atau bagaimana saya bisa men-debug untuk menemukan penyebabnya.

Saya telah melakukan pencarian di katalog solusi file .csproj saya, dan setiap tempat saya memiliki Persatuan saya miliki:

Referensi Termasuk = "Microsoft.Practices.Unity, Versi = 2.0.414.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL"

Tidak dapat menemukan referensi di mana pun yang bertentangan dengan 1.2.0.0 di salah satu proyek saya.

Ada ide bagaimana saya harus menyelesaikan masalah ini?

Saya juga akan menghargai tips tentang cara men-debug masalah seperti ini secara umum.


1
Bisakah salah satu majelis referensi Anda menggunakan beberapa barang di Unityperpustakaan lama ?
decyclone

3
Mungkin ... tapi bagaimana saya bisa menemukan majelis mana? Saya punya banyak proyek dalam solusi saya dan banyak tersangka potensial ... coba-coba bruteforce tampaknya agak sia-sia ...
ronag

3
Ini bukan referensi perakitan, Anda referensi versi 2.0. Tetapi pada saat runtime, CLR menemukan 1.2, versi lama. Jika Anda tidak melihat DLL lama di direktori build Anda, kemudian gunakan Fuslogvw.exe untuk mencari tahu bagaimana CLR menemukan salinan lama ini.
Hans Passant

2
Lihatlah folder bin proyek Anda dan lihat apakah dll proyek Anda memiliki konflik dengan namanya. Hapus saja yang itu dan kemudian Bangun kembali solusi Anda. Itu berhasil bagi saya.
coggicc

11
"atau salah satu ketergantungannya" adalah bagian yang sangat mengganggu saya. Jika tidak dapat memuat "salah satu dependensinya" kesalahan akan mengatakan yang mana "salah satu dependensinya" tidak dapat dimuat. Bentuk saat ini tidak berguna, mungkin juga mengatakan tidak dapat memuat thinggy
Paul McCarthy

Jawaban:


116
  1. Periksa apakah Anda mereferensikan sebuah majelis yang pada gilirannya merujuk pada versi lama unity. Sebagai contoh katakanlah Anda memiliki sebuah majelis yang disebut ServiceLocator.dllyang membutuhkan versi lama dari Unity assembly, sekarang ketika Anda mereferensikannya, ServiceLocatorAnda harus menyediakannya dengan Unity versi lama, dan itu yang menjadi masalah.

  2. Mungkin folder output di mana semua proyek membangun rakitan mereka, memiliki versi lama dari persatuan.

Anda dapat menggunakan FusLogVw untuk mencari tahu siapa yang memuat majelis lama, cukup tentukan jalur untuk log, dan jalankan solusi Anda, lalu periksa (di FusLogvw) baris pertama tempat perakitan Unity dimuat, klik dua kali dan lihat pemanggilannya perakitan, dan di sini Anda pergi.


6
Di mana file log FuseLogVw
Stiger

1
Untuk menghindari keharusan menemukan file log, Anda dapat menentukan jalur log khusus: Pengaturan, centang kotak centang Aktifkan jalur log kustom, masukkan jalur log kustom, segarkan.
RedGreenCode

82

Buka IIS Manager

Pilih Kelompok Aplikasi

lalu pilih kolam yang Anda gunakan

pergi ke pengaturan lanjutan (di sisi kanan)

Ubah bendera Aktifkan aplikasi 32-bit menjadi true.


IIS -> pilih masing-masing ApplicationPool -> Pengaturan Dasar -> periksa apakah kerangka kerja terbaru dipilih di bawah dropdown ".NET Framework versi"
Martin

Anda juga dapat mengklik kanan proyek Anda dalam VS. dan hapus tanda centang prefer 32 bit
eran otzap

Terima kasih. Itu berhasil. Ya sudah dalam kasus saya, hanya untuk mencoba. Saya membuatnya Salah dan berhasil.
meekash55

Ketika saya menggabungkan proyek dari 1 server ke server lain, flag ini memang False lagi, terima kasih atas solusinya!
Solusi Appsum

69

Bagi saya, tidak ada solusi lain yang berfungsi (termasuk strategi bersih / bangun kembali). Saya menemukan solusi lain untuk menutup dan membuka kembali Visual Studio .

Saya kira ini memaksa Visual Studio memuat ulang solusi dan semua proyek, memeriksa kembali dependensi dalam proses.


33
Jika Anda tidak percaya ini akan berhasil, setidaknya cobalah. Saya sendiri tidak bisa percaya sampai saya melakukannya.
Ben Cull

3
😍😍😍😍😍😍😍😍😍😍😍 Bekerja untuk saya
Devidas M Das

48

Cobalah untuk membersihkan folder Debug dan Rilis dalam solusi Anda. Kemudian hapus dan tambahkan lagi kesatuan.


3
Masalah ini dapat disebabkan oleh banyak hal ... solusi Anda memecahkan masalah saya, dan mungkin menyelesaikan masalah orang lain juga.
Scott Rippey

1
@ScottRippey Ini berhasil bagi saya. Saya pertama-tama menghapus semua file .pdb dan kemudian memuat kembali proyek saya dan membangunnya kembali.
botenvouwer

21

99% tidak dapat memuat file atau perakitan atau salah satu masalah dependensinya disebabkan oleh dependensi! Saya sarankan Anda mengikuti langkah-langkah ini:

  1. Unduh Dependency Walker dari http://www.dependencywalker.com/

  2. Luncurkan Dependency Walker dan buka dll (dalam kasus saya NativeInterfaces.dll)

  3. Anda dapat melihat satu atau lebih dll dengan kesalahan dalam merah membuka file Kesalahan ...

  4. Ini berarti bahwa dll ini tidak ada di sistem Anda; dalam kasus saya nama dll adalahMSVCR71.DLL

  5. Anda dapat mengunduh missings dll dari google dan menyalin di jalur yang benar (dalam kasus saya c:\windows\system32)

  6. Pada titik ini, Anda harus mendaftarkan dll baru di GAC (Global Assembly Cache): buka terminal DOS dan tulis:

    cd \Windows\System32
    regsvr32 /i msvcr71.dll
  7. Mulai ulang aplikasi Anda!


22
Ketergantungan walker bagus, tetapi menyalin DLL acak dari internet ke Windows ... kurang bagus. Lebih baik mencoba mencari penginstal yang menyediakan dll.
RJFalconer

Saya mendapat beberapa file ( API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL) tidak ditemukan dan membawa saya ke pertanyaan stackoverflow ini . Pada dasarnya perlu diingat bisa melihat false positive untuk beberapa file, tautan memberikan lebih detail.
cheriejw

16

Microsoft Enterprise Library (direferensikan oleh .NetTiers) adalah masalah kami, yang pada gilirannya merujuk ke versi Unity yang lebih lama. Untuk menyelesaikan masalah kami menggunakan pengalihan yang mengikat berikut di web.config:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Atau, Anda mungkin ingin memperbarui Perpustakaan Perusahaan ke versi terbaru.


16

Mengikuti berhasil bagi saya.

  • Hapus Berkas Sementara C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Berkas ASP.NET Sementara
  • Tutup VSTS dan Buka Lagi
  • Hapus dan Tambahkan DLL yang sama (Catatan: Anda menambahkan versi yang cocok yang sama)

15

Periksa file Web.config / App.config di proyek Anda. Lihat apakah nomor versi sudah benar.

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

Ini berhasil untuk saya.


2
Ini bekerja untuk saya walaupun itu web.config, bukan app.config
samneric

15

Terlepas dari pertanyaan asli yang diposting lima tahun lalu, masalahnya masih ada dan agak mengganggu.

Solusi umum adalah analisis menyeluruh dari semua majelis yang dirujuk untuk memahami apa yang salah. Untuk membuat tugas ini lebih mudah, saya membuat alat (ekstensi Visual Studio) yang memungkinkan memilih perakitan .NET ( file .dllatau .exe) untuk mendapatkan grafik dari semua rujukan yang direferensikan sambil menyoroti referensi yang bertentangan atau hilang.

Alat ini tersedia di Galeri Visual Studio: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

Contoh output: masukkan deskripsi gambar di sini


Tidak berfungsi dengan edisi komunitas Visual Studio
Draex_

Saya percaya harus ada masalah lain, tidak terkait dengan edisi Visual Studio. Saya menguji ekstensi pada edisi Komunitas VS 2017 dan VS 2015. Sebenarnya itu dikembangkan melalui edisi Komunitas VS 2017.
marss19

Aha. Apakah Anda memiliki ekstensi lain yang diinstal? Halaman ini mengatakan bahwa DGML tidak didukung di VS Community: msdn.microsoft.com/en-us/library/hh871439.aspx#VersionSupport
Draex_

1
Tidak ada alat arsitektur dalam edisi Komunitas tetapi editor DGML sendiri tersedia. Anda dapat menginstalnya dengan memilih "Instal editor DGML" di bawah "Komponen Individual" -> "Tools Code" melalui Visual Studio Installer -> Modify
marss19

11

tangkapan layarDi penjelajah solusi klik kanan pada proyek (bukan solusi), di tab build pilih Target platform: "Any CPU".


Setelah memeriksa kumpulan aplikasi, "Aktifkan Aplikasi 32-Bit" disetel ke False, tetapi target platform saya adalah x86. Mengubahnya ke CPU ATAU x64 apa pun memperbaiki masalah saya.
Keith Ketterer

11

Jawaban Juntos benar tetapi Anda juga harus mempertimbangkan:

Untuk kesatuan v2.1.505.2 berbeda AssemblyVersion dan AssemblyFileVersion atribut yang ditentukan:

masukkan deskripsi gambar di sini

AssemblyFileVersion digunakan oleh NuGet tetapi CLR tidak peduli! CLR hanya akan menggunakan AssemblyVersion !

Jadi pengalihan Anda harus diterapkan ke versi yang ditentukan dalam atribut AssemblyVersion . Jadi 2.1.505.0 harus digunakan

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>

Lihat juga: Apa perbedaan antara AssemblyVersion, AssemblyFileVersion, dan AssemblyInformationalVersion?


6

Saya juga mendapat kesalahan mengerikan ini dan menemukan solusi untuk ini ...

  1. Klik kanan pada nama Solusi
  2. Klik Bersihkan Solusi
  3. Mulai ulang Visual Studio
  4. Properti proyek Goto >> Build
  5. Ubah Konfigurasi untuk Melepaskan
  6. Mulai Debugging (F5)

1), 2)

Klik kanan pada nama Solusi

4), 5)

Ubah Konfigurasi untuk Melepaskan

Semoga ini bisa membantu Anda juga.


5
  • Goto: Solusi -> Paket
  • Klik Tab Lanjut (Temukan di bawah halaman)
  • Tambahkan dll Anda ke majelis tambahan (dengan cara ini kami dapat menambahkan dll eksternal di sharepoint).

7
Saya tidak punya "Solusi -> Paket" dalam proyek VS2010 saya
Muflix

5

Tidak yakin apakah ini bisa membantu.

Periksa apakah nama Assembly dan namespace Default di Properies dalam pertandingan Anda cocok. Ini menyelesaikan masalah saya yang menghasilkan kesalahan yang sama.


Luar biasa! Nama file dll dan namespace saya berbeda, saya menyalin namespace dan mengganti nama dll saya.
Anynomous Khan

5

Dalam kasus saya di folder bin adalah dll referensi non disebut Unity.MVC3, saya mencoba mencari referensi apa pun di visual studio ini tanpa hasil, jadi solusi saya sangat mudah seperti menghapus dll itu dari folder bin.


4

Terima kasih Riddhi M. Mengikuti bekerja untuk saya.

Hapus File Sementara C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ File ASP.NET Sementara Tutup VSTS dan Buka Lagi Hapus dan Tambahkan DLL yang sama (Catatan: Anda menambahkan versi pencocokan yang sama)


Menghabiskan waktu yang lama untuk ini dan saya tidak percaya ini adalah jawabannya. Ini biasanya solusi masuk yang baik ketika Anda melihat beberapa perilaku aneh dalam VS. Terima kasih.
Bonez024

3

Anda mengatakan Anda memiliki banyak proyek dalam solusi Anda ... yah, mulailah dengan satu di dekat bagian atas urutan pembuatan. Dapatkan yang itu untuk dibangun dan setelah Anda mengetahuinya, Anda dapat menerapkan perbaikan yang sama ke yang lainnya.

Jujur, Anda mungkin hanya perlu menyegarkan referensi Anda. Sepertinya Anda memperbarui versi Anda dan tidak memperbarui referensi, atau itu masalah jalur relatif jika Anda menjaga solusi Anda dalam kontrol sumber. Cukup verifikasi asumsi Anda, dan tambahkan kembali referensi.


3

Mengikuti berhasil bagi saya.

  • Hapus Berkas Sementara C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Berkas ASP.NET Sementara
    • kemudian klik kanan pada Temporary Asp.net Files> properties> security dan berikan total kontrol akses ke IIS dan kepada semua pengguna yang menjalankan proyek saya


3

Saya memiliki masalah yang sama dengan saya menyelesaikannya melalui instruksi di bawah ini:

  1. buka menu alat dan pilih opsi
  2. dalam opsi, jendela buka Proyek dan Solusi / Proyek Web
  3. memeriksa use the 64bit version of IIS ...

masukkan deskripsi gambar di sini


2

Anda harus menghapus file appname.dll Anda dari folder output Anda. Bersihkan folder Debug dan Rilis. Bangun kembali dan salin ke folder keluaran, dst. File dll.


2

I "Set as Startup Project" pustaka / proyek tidak diturunkan / tidak ditemukan.

Lalu mengerahkannya.

Berhasil!

Saya pikir itu tidak dapat menemukan. Dll karena pada awalnya tidak ada.


2

Kemungkinan penyebab lain: pastikan Anda tidak sengaja memberi kedua proyek nama perakitan yang sama di properti proyek.


Ini membutuhkan waktu berjam-jam untuk mencari tahu .... Saya tidak sengaja menyebutkan proyek uji unit saya dengan nama yang sama dengan proyek utama, sehingga proyek uji unit dll pasti telah menimpa proyek dll
Iannazzi

2

Solusi saya untuk .NET 4.0, menggunakan Enterprise Library 5, adalah menambahkan referensi ke:

Microsoft.Practices.Unity.Interception.dll


2

Carilah referensi yang bertentangan. Bahkan setelah bersih dan dibangun kembali, referensi yang bertentangan masih akan menimbulkan masalah. Masalah saya adalah antara AForge dan Accord. Saya menghapus kedua referensi, dan menambahkan kembali referensi memilih kembali referensi tertentu (khusus untuk kasus saya, hanya sesuai).


2

Bagi saya membangun kembali game unity tanpa Unity C # Promark Tanda centang berfungsi.


2

Dalam kasus saya, tidak ada jawaban yang diusulkan yang berfungsi.

Inilah yang bekerja untuk saya:

  1. Hapus referensi
  2. Ganti nama DLL
  3. Impor referensi lagi

Langkah kedua tampaknya penting karena tidak akan berhasil tanpanya.


2

Coba periksa apakah properti "Salin ke Lokal" untuk referensi disetel ke true dan versi spesifik disetel ke true. Ini relevan untuk aplikasi di Visual Studio.


2

Saya memiliki ini hari ini, dan dalam kasus saya masalahnya sangat aneh:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
  </dependentAssembly>0.

Catat karakter tersesat di akhir XML - entah bagaimana itu telah dipindahkan dari nomor versi ke akhir blok XML ini!

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>

Diubah ke atas dan voila! Semuanya bekerja lagi.


1

jika Anda mendapatkan pesan kesalahan ini dengan membuka aplikasi pada Anda windows xp itu berarti Anda pertama kali menginstal aplikasi itu karena tidak berfungsi tanpa kerangka kerja 4 dan paket layanan 3. Anda menginstal keduanya dan lagi Anda mendapatkan kesalahan ini sehingga Anda harus menginstal ulang aplikasi itu lagi tetapi uninstall dulu dari menambah dan menghapus

jika ini tidak berhasil, jangan menyalahgunakan saya. saya juga seorang junior

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.