Saya telah mengembangkan aplikasi menggunakan Entity Framework , SQL Server 2000, Visual Studio 2008 dan Enterprise Library.
Ini berfungsi dengan sangat baik secara lokal, tetapi ketika saya menyebarkan proyek ke lingkungan pengujian kami, saya mendapatkan kesalahan berikut:
Tidak dapat memuat satu atau lebih dari jenis yang diminta. Ambil properti LoaderExceptions untuk informasi lebih lanjut
Stack trace: di System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)
di System.Reflection.Assembly.GetTypes ()
di System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (Memuat konteks Konteks)
di System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (Memuat konteks Konteks)
di System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (Majelis perakitan, beban Boolean direferensikanAssemen, Kamus
2 knownAssemblies, Dictionary
2 & jenisMenambah, Daftar`1 & kesalahan)di System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyDariCache (ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies)
di System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Type type)
di System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (Tipe type, Assembly callingAssembly)
di System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, parameter ObjectParameter [])
Entity Framework tampaknya memiliki masalah, ada petunjuk bagaimana cara memperbaikinya?
sumber
Jawaban:
Saya memecahkan masalah ini dengan menetapkan atribut Salin Lokal dari referensi proyek saya menjadi true.
sumber
Kesalahan ini tidak memiliki jawaban peluru ajaib yang sebenarnya. Kuncinya adalah memiliki semua informasi untuk memahami masalahnya. Kemungkinan besar rakitan yang dimuat secara dinamis tidak memiliki rakitan yang direferensikan. Perakitan itu harus ada di direktori tempat sampah aplikasi Anda.
Gunakan kode ini untuk menentukan apa yang hilang.
sumber
throw new Exception(errorMessage);
, harapan membantu seseorang.Salah satu solusi yang berhasil bagi saya adalah menghapus folder bin / dan obj / dan membangun kembali solusinya.
sumber
Dua kemungkinan solusi:
sumber
Seperti yang telah disebutkan sebelumnya, biasanya perkumpulan tidak ada di sana.
Untuk mengetahui dengan tepat perakitan apa yang Anda lewatkan, lampirkan debugger Anda, atur breakpoint dan ketika Anda melihat objek pengecualian, telusuri ke properti 'LoaderExceptions'. Majelis yang hilang harus ada di sana.
Semoga ini bisa membantu!
sumber
Solusinya adalah memeriksa LoaderException: Dalam kasus saya, beberapa file DLL hilang.
sumber
Pastikan Anda mengizinkan aplikasi 32 bit pada IIS jika Anda menggunakan IIS. Anda dapat menentukan ini pada pengaturan Application Pool Anda saat ini.
sumber
Saya mengalami kesalahan ini dengan aplikasi ASP.NET 4 + SQL Server 2008 R2 + Entity Framework 4.
Ini akan bekerja dengan baik pada mesin pengembangan saya (Windows Vista 64-bit). Kemudian ketika dikerahkan ke server ( Windows Server 2008 R2 SP1), itu akan berfungsi sampai sesi habis. Jadi kami akan menyebarkan aplikasi dan semuanya tampak baik-baik saja dan kemudian membiarkannya lebih dari batas waktu sesi 20 menit dan kemudian kesalahan ini akan terjadi.
Untuk mengatasinya, saya menggunakan kode ini di blog Ken Cox untuk mengambil properti LoaderExceptions.
Untuk situasi saya, DLL yang hilang adalah
Microsoft.ReportViewer.ProcessingObjectModel
(versi 10). DLL ini perlu diinstal di GAC dari mesin aplikasi berjalan. Anda dapat menemukannya di Paket Redistributable Microsoft Report Viewer 2010 yang tersedia di situs unduhan Microsoft.sumber
Awalnya saya mencoba penampil log Fusion, tetapi itu tidak membantu jadi saya akhirnya menggunakan WinDbg dengan ekstensi SOS.
! dumpheap -stat -type Exception / D
Kemudian saya memeriksa FileNotFoundExceptions. Pesan dalam pengecualian berisi nama DLL yang tidak memuat.
NB, the / D memberi Anda hasil hyperlink, jadi klik pada tautan dalam ringkasan untuk FileNotFoundException. Itu akan memunculkan daftar pengecualian. Kemudian klik tautan untuk salah satu pengecualian. Itu akan! Membuang objek pengecualian itu. Maka Anda hanya bisa mengklik tautan untuk Pesan di objek pengecualian, dan Anda akan melihat teksnya.
sumber
Jika Anda menggunakan EntityDataSource dalam proyek Anda, solusinya ada di Perbaiki: 'Tidak dapat memuat satu atau lebih dari jenis Kesalahan yang diminta' . Anda harus mengatur ContextTypeName = "ProjectNameNameSpace.EntityContainerName" '
Ini menyelesaikan masalah saya ...
sumber
Contoh saya tentang masalah ini akhirnya menjadi referensi yang hilang. Perakitan dirujuk di app.config tetapi tidak memiliki referensi dalam proyek.
sumber
Jika Anda menggunakan Entity Framework , cobalah menyalin referensi berikut secara lokal.
Ubah properti "Salin Lokal" ke "Benar" untuk referensi ini dan publikasikan.
sumber
Solusi lain untuk mengetahui mengapa tidak ada yang bekerja (dari Microsoft connect):
Tambahkan kode ini ke proyek:
Matikan rakitan serialisasi generasi.
sumber
Saya memiliki aplikasi web .NET 4.0, ASP.NET MVC 2.0, Entity Framework 4.0 yang dikembangkan di Visual Studio 2010. Saya memiliki masalah yang sama, yaitu bekerja pada satu server Windows Server 2008 R2 tetapi tidak pada server Windows Server 2008 R2 lainnya, meskipun versi. NET dan ASP.NET MVC sama, melemparkan kesalahan yang sama seperti Anda.
Saya pergi untuk mengikuti saran miko, jadi saya menginstal Windows SDK v7.1 (x64) pada server yang gagal, sehingga saya bisa menjalankan! Dumpheap.
Nah, ternyata menginstal Windows SDK v7.1 (x64) menyelesaikan masalah. Ketergantungan apa pun yang hilang harus dimasukkan dalam SDK. Ini dapat diunduh dari Microsoft Windows SDK untuk Windows 7 dan .NET Framework 4 .
sumber
Menambahkan masalah / solusi spesifik saya ke ini karena ini adalah hasil pertama untuk pesan kesalahan ini. Dalam kasus saya, kesalahan diterima ketika saya menggunakan aplikasi kedua dalam folder aplikasi pertama saya di IIS . Keduanya mendefinisikan string koneksi dengan nama yang sama yang mengakibatkan aplikasi anak mengalami konflik dan pada gilirannya menghasilkan pesan kesalahan yang tidak jelas (bagi saya). Itu dipecahkan dengan menambahkan:
di blok string koneksi aplikasi web anak yang mencegahnya mewarisi string koneksi file web.config lebih tinggi dalam hierarki, sehingga terlihat seperti:
Referensi Stack Overflow yang membantu ketika saya menentukan apa yang sedang terjadi adalah apakah aplikasi anak akan diwarisi dari web.config induknya? .
sumber
Ini berhasil untuk saya. Tambahkan di web.config Anda
sumber
It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Masalah saya telah diatasi setelah saya menghapus file rakitan yang berlebihan dari
bin
folder.sumber
Seandainya tidak ada jawaban lain yang membantu Anda:
Ketika saya memiliki masalah ini, ternyata layanan Windows saya dibangun untuk platform x64, dan saya secara tidak sengaja menjalankan versi 32-bit InstallUtil.exe. Jadi pastikan Anda menggunakan versi InstallUtil yang tepat untuk platform yang Anda bangun.
sumber
Saran lainnya semuanya baik. Dalam kasus saya, masalahnya adalah bahwa kotak pengembang adalah mesin 64-bit menggunakan lokasi x86 dari berbagai API, termasuk Silverlight .
Dengan mengubah platform target agar sesuai dengan server 32-bit di mana aplikasi web sedang digunakan menghapus sebagian besar kesalahan yang terkait dengan tidak dapat memuat satu atau lebih dari jenis yang diminta.
sumber
Saya mengubah Properti Versi Spesifik dari Refrences menjadi false dan itu membantu.
sumber
Saya memiliki pesan kesalahan yang sama yang dilaporkan saat mengkompilasi paket Visual Studio (VSPackage). Seluruh solusi mengkompilasi dan kesalahan dilemparkan ketika paket sedang dibuat oleh CreatePkgDef. Karena itu, jelas bahwa saya tidak dapat menangkap LoaderExceptions karena bukan aplikasi saya yang melemparnya, tetapi alat Microsoft sendiri. (Meskipun saya bertanggung jawab atas kebingungan CreatePkgDef.)
Dalam kasus saya penyebab utama adalah bahwa solusi saya membuat MyDll.dll yang telah terdaftar ke GAC (dan mereka berbeda), sehingga CreatePgkDef bingung mana yang harus digunakan dan memutuskan hanya untuk melempar kesalahan yang bukan sangat membantu. MyDll.dll di GAC didaftarkan oleh penginstal produk yang sama (jelas versi sebelumnya, dengan / sedikit / konten berbeda).
Bagaimana memperbaikinya
Mengubah AssemblyVersion cukup baik untukku. :)
Saya harap ini membantu.
sumber
Saya memiliki masalah yang sama (tetapi pada lokal saya) ketika saya mencoba menambahkan migrasi Kerangka Entity dengan Package Manager Console.
Cara saya menyelesaikannya adalah dengan membuat aplikasi konsol di mana Main () memiliki kode berikut:
Pastikan kelas Konfigurasi adalah Konfigurasi migrasi proyek gagal Anda. Anda akan membutuhkan System.Data.Entity.Migrations untuk menggunakan DbMigrator.
Atur breakpoint di aplikasi Anda, dan jalankan. Pengecualian harus ditangkap oleh Visual Studio (kecuali jika Anda memiliki tipe pengecualian yang diatur untuk tidak memutus sesi debug), dan Anda harus dapat menemukan info yang Anda cari.
Referensi yang hilang dalam kasus saya adalah EFProviderWrapperToolkit.
sumber
Saya mendapatkan masalah ini ketika saya menginstal paket NuGet di salah satu proyek dan lupa memperbarui proyek lainnya.
Saya memecahkan ini dengan hanya membuat kedua proyek memiliki rakitan referensi yang sama.
sumber
Itu juga terjadi pada saya. Saya memecahkan masalah sebagai berikut: Klik kanan Solusi, Kelola Paket NuGet untuk Solusi ... Konsolidasi paket dan tingkatkan paket menjadi versi yang sama.
sumber
Atur mode IIS 32 bit ke true, mode debug ke true dalam file konfigurasi, menghapus
temp
direktori dan mengatur ulang IIS memperbaiki masalah sementara dan kembali setelah beberapa waktu.sumber
Verifikasi bahwa setiap proyek Anda diatur dengan benar di Pengelola Konfigurasi .
Mirip dengan William Edmondson's alasan untuk masalah ini, saya mengubah pengaturan Manajer Konfigurasi saya dari "Debug" "Any CPU" ke "Debug" ".NET". Masalahnya adalah bahwa versi ".NET" TIDAK dikonfigurasikan untuk membangun SEMUA proyek, sehingga beberapa DLL saya kedaluwarsa (sementara yang lain adalah saat ini). Ini menyebabkan banyak masalah dengan memulai aplikasi.
Perbaikan sementara adalah dengan melakukan saran Kenny Eliasson untuk membersihkan direktori \ bin dan \ obj. Namun, begitu saya membuat lebih banyak perubahan pada proyek yang tidak dikompilasi, semuanya akan gagal lagi.
sumber
Saya juga mendapatkan masalah ini ketika membuat tambahan Microsoft Word baru dengan Visual Studio 2015. Masalahnya adalah saya memiliki 2 versi MS Office, 2013 dan 2016. Saya menghapus instalasi MS Office 2013 dan kemudian berfungsi.
sumber
Saya membangun beberapa proyek untuk SharePoint dan, tentu saja, menyebarkannya. Suatu kali itu terjadi.
Saya menemukan perakitan lama di C: \ Windows \ assembly \ temp \ xxx (dengan FarManager), menghapusnya setelah reboot, dan semua proyek dibangun.
Saya punya pertanyaan untuk MSBuild, karena dalam kumpulan proyek terkait seperti proyek dan setiap perakitan ditandai "Salin lokal", tetapi tidak dari GAC.
sumber
Saya dapat memperbaiki masalah ini dengan menandai "Salin Lokal = Benar" pada semua file DLL yang dirujuk dalam proyek, membangun kembali dan menggunakan pada server pengujian.
sumber
Saya punya masalah dengan automap. Dalam
bin
folder tersebut, file automap.4net.dll ada di sana, tetapi karena alasan tertentu automap.xml dan automap.dll tidak. Menyalin mereka kebin
direktori memecahkan masalah.sumber