Saat menjalankan proyek aplikasi web, pada waktu yang tampaknya acak, halaman mungkin gagal dengan kesalahan CS0433: tipe ada di beberapa DLL. Semua DLL dihasilkan dari DLL yang berada di direktori "Berkas ASP.NET Sementara".
108
Tambahkan atribut batch = "false" ke elemen "kompilasi" dari file web.config.
Masalah ini terjadi karena cara ASP.NET 2.0 menggunakan referensi aplikasi dan struktur folder aplikasi untuk menyusun aplikasi. Jika properti batch elemen di file web.config untuk aplikasi disetel ke true, ASP.NET 2.0 menyusun setiap folder dalam aplikasi ke dalam rakitan terpisah.
Ini mungkin terjadi jika Anda menempatkan file .cs di App_Code dan mengubah tindakan build-nya untuk dikompilasi di Proyek Aplikasi Web.
Baik buat tindakan build untuk file .cs di App_Code sebagai Konten atau ubah nama App_Code menjadi nama lain. Saya mengubah nama karena intellisense tidak akan memperbaiki file .cs yang ditandai sebagai konten.
Info lebih lanjut di http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html
sumber
Salah satu kemungkinan alasan untuk kesalahan ini adalah bahwa ada 2 halaman aspx yang memiliki nama yang sama
inherits=
di<@page language=......inherits=>
barisnya.Mengubah
inherits=
nama menyelesaikan kesalahan.sumber
Kalau-kalau ada orang lain yang berbagi masalah saya, saya mendapat kesalahan ini ketika mencoba menerbitkan Situs Web dari proyek bercabang yang baru, membangun bekerja dengan sempurna.
Ternyata saya lupa menghapus kotak centang untuk "Izinkan situs yang telah dikompilasi menjadi dapat diperbarui" di bawah Publikasikan Pengaturan -> Konfigurasi prakompilasi .
sumber
Sebagai poin data lain, saya hanya mengalami masalah ini tanpa ada bukti referensi melingkar seperti yang dijelaskan dalam tautan di jawaban Ben. Membangun proyek situs web saya akan gagal dengan beberapa kesalahan ini, dan pengaturan
compilation batch="false"
memperbaikinya, tetapi saya tidak ingin mengambil rute itu karena ini adalah situs web produksi besar.Solusi ini berada di subfolder dari folder D: \ svn saya, yang telah saya petakan ke S :. Ketika saya membuka solusi dari S :, kesalahan ini terjadi, tetapi jika saya langsung ke D: \ svn dan membuka solusi, tidak ada kesalahan.
Saya juga memperhatikan bahwa, meskipun ada
compilation batch="true"
di web.config saya, ketika membuka solusi dari S yang dipetakan: drive semua file .ascx saya dikompilasi ke dalam rakitan mereka sendiri. Jika saya membukanya dari lokasi fisik, file .ascx dikompilasi ke dalam rakitan folder masing-masing (begitulahbatch="true"
seharusnya cara kerjanya).Aneh.
sumber
Kesalahan ini disebabkan oleh konflik antara nama kelas formulir web dan wsdl stub (kode di belakang file .cs) yang memiliki nama kelas yang sama yaitu
Halaman ASPX: Dasbor Kelas: Dasbor kelas partiacl
AppCode / APIServices.cs: Dasbor kelas parsial publik
Kesalahan hanya dapat direproduksi saat menerbitkan situs web tetapi build dan debug tidak menginformasikan kesalahan apa pun.
sumber
Dalam kasus saya, saya telah mengganti nama proyek, begitu juga dll telah diganti namanya. Ketika saya baru saja menyalin dll baru tetapi tidak berpikir untuk menghapus yang lama dari server, saya segera memiliki banyak pasangan kelas dengan nama yang sama. Menghapus dll yang kadaluwarsa adalah melakukan trik (penyebab).
sumber
Tak satu pun dari jawaban ini berhasil untuk saya, namun saya memperbaiki masalahnya. Karena saya menggunakan fungsi VS's Publish untuk menyebarkan aplikasi web, saya memilih opsi untuk menghapus semua file yang ada sebelum dipublikasikan di wizard Publish Web. Ini memaksa salinan bersih aplikasi dan semuanya bekerja dengan baik dari sana.
Solusi ini mungkin berguna jika salinan debugging lokal Anda berfungsi dengan baik tetapi sistem yang diterbitkan tidak. Juga bagus jika Anda tidak ingin meluangkan waktu untuk melacak dll individu untuk dihapus dan tidak keberatan file produksi dihapus terlebih dahulu.
sumber
Dalam kasus saya, menghapus semua rakitan keluaran dari folder bin di semua proyek dalam solusi memecahkan masalah. Sayangnya saya tidak punya penjelasan untuk itu.
sumber
Dalam kasus saya, masalah terpecahkan ketika saya mengedit file Designer.cs yang masih memiliki nama kelas yang digandakan. untuk beberapa alasan, ketika saya mengganti nama kelas "logout" menjadi "logout2", dalam file desainer itu tidak secara otomatis berubah, dan masih "logout", dan nama kelas ini sudah ada di dll yang telah dikompilasi dalam proyek saya (milik ke aplikasi web pihak ketiga tempat saya bekerja dan mengembangkannya).
sumber
Dapatkan masalah ini saat meletakkan bagian dari halaman aspx ke dalam kontrol pengguna terpisah. Di mesin saya semuanya baik-baik saja, di server mendapat kesalahan.
Mengganti nama kelas dan file masalah.
http://support.microsoft.com/kb/919284 Metode 2: Susun ulang folder di aplikasi menulis tentang kemungkinan referensi melingkar
sumber
Tak satu pun dari solusi ini berhasil untuk saya. Kedua file DLL saya yang bentrok berada di C: \ ... \ AppData \ ... \ Temporary ASP.NET Files \ ...
Masalahnya adalah saya telah mengembalikan repo sumber saya ke versi sebelumnya - sebelum kami memindahkan jenis dari satu proyek ke proyek lain dalam solusi yang sama.
Saya mencoba menghapus DLL yang lebih baru - yang seharusnya tidak ada sama sekali di basis kode lama - dari lokasi "File ASP.NET Sementara" yang diidentifikasi oleh msbuild. msbuild taruh saja kembali.
Saya juga mencoba pengaturan web.config yang beberapa di sini telah berhasil digunakan, tetapi itu juga tidak berhasil. Meskipun, ketika saya menulis ini, saya menyadari bahwa sebenarnya ada dua proyek MVC dalam solusi yang sama dan keduanya memiliki kesalahan, jadi masalahnya mungkin saya tidak menambahkan pengaturan ke keduanya.
Saya mencoba memutar repo sumber saya ke depan dan membersihkan dan menggulung kembali dan membersihkan. Tidak ada.
Saya mencoba menghapus semua lokasi "File ASP.NET Sementara". msbuild taruh saja kembali.
Akhirnya, saya mencoba membangun kembali di Visual Studio. Meskipun output baris perintah dan output "Kesalahan" keduanya memberikan kesalahan msbuild "File ASP.NET Sementara" yang sama, kesalahan Intellisense - saat mengarahkan kursor ke jenis yang konflik - sebenarnya mengeluh tentang DLL di direktori output. Rupanya "Clean" dan "Rebuild" tidak melakukan tugasnya. Saya secara manual menghapus DLL di direktori keluaran yang diidentifikasi oleh Intellisense, dan masalahnya telah terpecahkan.
tl; dr - Pastikan Anda mencakup semua web.configs Anda dengan pengaturan batch, dan coba gunakan Intellisense untuk petunjuk lebih lanjut.
sumber
Masalah saya terkait dengan .dll yang dihasilkan di folder proyek saya.
Jika Anda mereferensikan file lain, alih-alih melakukan semua yang Anda lihat di atas, yang memperbaiki masalah saya secara instan hanyalah menghapus .dll yang berada di dalam direktori / bin saya untuk proyek saya.
Masalahnya belum tentu perbaikan web.config - ini adalah referensi melingkar yang perlu diselesaikan. Saya menyadari bahwa saya menghapus .dll lama di file proyek asli saya tetapi tidak di proyek yang mereferensikannya.
Saya tidak menyarankan membuat modifikasi pada file web.config Anda karena itu hanya perbaikan bantuan pita - tidak benar-benar mengatasi masalah sebenarnya. Lakukan itu jika Anda tidak ingin memperbaiki masalah, tetapi jika Anda ingin menghindari sakit kepala di masa mendatang, hapus saja .dll dari kedua tempat tersebut.
sumber
Saya memiliki kelas parsial dengan nama yang sama di dua proyek berbeda. Saya menyelesaikannya dengan hanya meninggalkannya dalam satu proyek.
sumber
Terkadang mungkin membantu menghapus solusi dan membuatnya lagi. Karena penggunaan ini terjadi ketika dikonversi dari VS2005 ke vs2010, beberapa referensi ke framework 4.0 (setelah peningkatan) tetap ada dalam solusi, bahkan semua project ditetapkan sebagai 3.5.
Biasanya membangun kembali solusi harus menyelesaikan masalah ini.
sumber
Saya mengalami masalah yang sama ketika saya mengompilasi aplikasi di server kompilasi.
Pengontrol saya memiliki kode statis sederhana, jadi saya mengubah ascx saya:
Untuk
Juga menghapus kata kunci parsial dari codebehind dan menambahkan namespace ke codebehind.
Ini:
Untuk ini:
Dan itu berhasil untuk saya.
sumber
Bagi saya ini terjadi ketika saya menetapkan lokasi PrecompiledWeb / Publish saya ke direktori saat ini yang juga merupakan tempat folder root situs.
Situs Web saya kemudian melihat folder terbitkan sebagai bagian dari proyek saat menyusun / membangun dan kemudian menemukan duplikat dengan cara itu.
yaitu Jangan letakkan versi situs Anda yang telah dipublikasikan / dikompilasi sebelumnya di folder kode situs Anda.
sumber
Jika DLL ditampilkan di folder sementara, Anda harus mencoba membersihkan solusi Anda.
sumber
Memposting solusi saya:
Masalah ini terkait dengan "On-Access Scan" dari Mcafee Antivirus. Menonaktifkan ini memecahkan masalah. Entah bagaimana, folder Sementara ASP tidak digunakan dengan benar oleh ASP saat antivirus AKTIF.
Semoga ini bisa membantu seseorang.
sumber
Folder App_Code menyebabkan masalah, letakkan kelas di luar folder (Berfungsi dengan baik)
Folder App_Code tidak dirancang untuk Proyek Aplikasi Web
http://vishaljoshi.blogspot.in/2009/07/appcode-folder-doesnt-work-with-web.html
sumber
Pergi ke Tambahkan referensi dan cari kedua dll, Kedua dll akan diperiksa, hapus centang salah satu dll, karena ada referensi ke dll yang sama dengan versi ambiguitas yang berbeda dihasilkan.
sumber
Solusi saya adalah mengganti CodePage = "...." dengan CodeBehind = "..." di file .aspx. Entah bagaimana itu dibiarkan sebagai CodePage selama migrasi dari versi .NET sebelumnya. Arahan halaman ini membuat file dll lain yang bertentangan dengan file dll proyek.
sumber
Tak satu pun dari solusi ini berhasil untuk saya. Mengompilasi dalam mode "Rilis" berhasil, tetapi ketika saya beralih ke "Debug", saya mendapatkan sekian Pesan kesalahan ini.
Saya tidak mengerti mengapa, tetapi restart sederhana dari Visual Studio adalah solusi saya.
sumber
Saya menghadapi masalah dalam waktu kompilasi.
Saya setuju dengan atribut batch = "true" , kesalahan mengatakan ada 2 assembly
Solusi 1: Menghapus salah satunya
Solusi2: Konfigurasi salah satunya
sumber