“Tidak dapat memuat tipe [Namespace] .Global” membuat saya sedih


106

Di aplikasi .Net 2.0 Asp.net WebForms saya, saya memiliki Global.asax saya yang berisi kode berikut:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

Namun ketika saya membangun saya mendapatkan kesalahan yang menyatakan-

Tidak dapat memuat jenis 'MyNamespace.Global'.

Ini tampaknya karena namespace MyNamespace (ditentukan dalam kode di belakang file Global.asax.cs) tidak terlihat oleh kompiler di file Global.asax (tidak ditampilkan di R # intellisence ..). Ini ternyata sangat sulit untuk dipecahkan ... bantuan apa pun akan dihargai!

Catatan: Global.asax dan Global.asax.cs terletak di folder yang sama.

Note2: Saat mengkompilasi dari prompt vs dengan csc dikompilasi dengan baik


Apakah halaman lain di aplikasi berfungsi? Terkadang hal ini terjadi saat server web dikonfigurasi untuk menjalankan 1.1 tetapi aplikasi dikompilasi untuk 2.0
Noon Silk

ya, 'Target Framework' adalah 2.0
gkdm

Jawaban:


162

Satu situasi yang saya temui yang menyebabkan masalah ini adalah ketika Anda menentukan platform untuk membangun melalui "Konfigurasi Bangun".

Jika Anda menetapkan x86 sebagai platform build Anda, visual studio akan secara otomatis menetapkan bin / x86 / Debug sebagai direktori output Anda untuk project ini. Ini benar-benar valid untuk jenis proyek lain, kecuali untuk aplikasi web di mana ASP.NET mengharapkan rakitan akan di-output ke folder Bin.

Apa yang saya temukan dalam situasi saya adalah bahwa mereka menjadi output ke keduanya (Bin dan Bin / x86 / Debug), dengan pengecualian bahwa beberapa dll, dan yang paling penting yang tidak dapat dijelaskan adalah aplikasi web dll Anda, hilang dari Bin. map.

Ini jelas menyebabkan masalah kompilasi dan karenanya muncul pengecualian "Tidak dapat memuat jenis Global". Membersihkan solusi dan menghapus rakitan tidak membuat perbedaan pada build berikutnya. Solusi saya hanya mengubah jalur keluaran dalam pengaturan proyek untuk aplikasi web ke Bin (bukan bin / x86 / Debug).


13
Juga: Coba tutup dan buka kembali VS. Jika Anda menggunakan server debugging bawaan maka itu mungkin menjalankan situs web yang berbeda. Membuka / menutup akan mendaftarkan ulang port localhost.
BradLaney

1
Dalam kasus saya, ia ingin meletakkan output proyek di inetpub \ wwwroot \ myproject \ bin, tetapi saya telah mengonfigurasi iisexpress untuk melihat di myProject \ bin. Hanya mengubah jalur keluaran saja sudah menyelesaikan masalah.
shindigo

Dalam kasus saya, saya memiliki .dll yang seharusnya disertakan, tetapi tidak disetel ke 'salin lokal' karena alasan tertentu. Ini menyebabkan masalah kompilasi yang serupa dengan yang dinyatakan dalam jawaban ini.
HockeyJ

Terima kasih, Stantona. Inilah yang berhasil bagi saya, dan tepat pada waktunya bagi saya untuk pulang.
Bill Norman

3
Mengubah jalur keluaran proyek ke folder bin menyelesaikan masalah. Terima kasih telah menyelamatkan hari saya!
Tunahan

18

Sudahkah Anda mengubah namespace proyek Anda? Saya telah melihat ini terjadi sesekali di mana saya telah mengubah namespace di dialog Properti Proyek tetapi Visual Studio belum mengubah namespacedeklarasi di file kode yang ada.


Menurut Anda apa yang harus saya lakukan?
gkdm

1
Periksa namespace di file .cs Anda dan pastikan itu sama dengan yang dideklarasikan di file asax. Kecurigaan saya adalah mereka akan berbeda ...
PhilPursglove

Saya tidak yakin. Yang bisa saya sarankan untuk saat ini adalah membangun kembali dan memeriksa isi namespace di assembly Anda dengan ILDASM.
PhilPursglove

Terima kasih, inilah solusi yang membantu saya. Saya akan menggunakan Resharper untuk memeriksa semua namespace dalam solusi saya.
Leonard

Saya baru saja mengalami hal ini: Dalam proyek MVC 5 (tidak penting) dan saya mengubah namespace proyek tetapi lupa untuk mengubah Global.asax (dan folder App_Start). Terlepas dari pengalaman, terkadang kekeliruan konyol masih membuat Anda bingung.
Jason Snelders

15

Saya baru mengenal pengembangan asp .net dan saya menghadapi masalah yang sama.

Saya memperbarui kelas sebagai partialkelas dan berfungsi dengan baik.

public partial class Global : System.Web.HttpApplication

1
Tidak yakin mengapa file Global saya berakhir tanpa ini, tetapi ini adalah masalah bagi saya, terima kasih!
ginja

9

Saya memulai ulang Visual Studio dan kesalahan telah hilang!


2
hal yang sama berhasil untuk saya. Pastikan Anda menutup SEMUA Visual Studio dibuka.
alansiqueira27

5

Ini satu lagi untuk buku. Tampaknya ini terjadi saat Anda meluncurkan lebih dari satu aplikasi web dari nomor port yang sama.

Pada dasarnya, saya memiliki beberapa cabang yang saya kerjakan, saya memiliki cabang utama dan cabang pementasan dan cabang rilis. Ketika saya beralih cabang ke cabang pementasan, saya perhatikan bahwa itu menggunakan konfigurasi alamat port yang sama jadi saya memilih untuk mengubahnya. Saya kemudian menerima peringatan lain bahwa reservasi ini bentrok dengan aplikasi lain yang dikonfigurasi. Server IIS Express sensitif tentang hal itu dan untuk alasan apa pun itu mem-bata konfigurasi.

Dengan hanya memilih port ketiga yang tidak terpengaruh, masalah ini hilang karena kemudian memetakan port ke pemetaan direktori baru (cabang saya terletak berbeda pada disk). Saya memperhatikan ini karena saya mencoba mengubah nama tipe yang ditunjukkan oleh Global.asaxtetapi nama tipe tidak berubah bahkan setelah server dimulai ulang, jadi jelas, kode yang saya ubah tidak tercermin oleh penerapan IIS Express.

Jadi, sebelum Anda kehilangan terlalu banyak waktu tidur karena ini, coba ubah nomor port IIS yang saat ini digunakan untuk menjalankan proyek web.


5
  1. Klik kanan pada Solusi Proyek dan Pilih Batch Build.
  2. Kemudian pilih Nama Proyek Anda dan Bersihkan Dan Bangun Kembali.

Berfungsi Baik Untuk Saya DI VS 2015.Sekarang saya dapat Menggunakan acara Global. Global.asaxFile saya memiliki Baris ini

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

Dan saya membuat file kelas Global.asax.csyang ada di AppCodefolder yang terlihat seperti

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

Saya harap ini akan membantu


3

Periksa Build Action dari Global.asax.cs. Ini harus diatur ke Kompilasi.

Di Solution Explorer, klik kanan Global.asax.cs dan buka Properties. Di panel Properties, setel Build Action (sambil tidak men - debug).

Tampaknya VS 2008 tidak selalu menambahkan file .asax (.cs) dengan benar secara default.


3

Saya mengalami kesalahan serupa saat memiliki file

<clear/>

tag sebagai anak (anak pertama) dari

<assemblies>

tag di Web.config saya . Saya telah memasukkan tag di web.config saya dalam upaya untuk mencegah warisan konfigurasi dalam aplikasi yang digunakan di bawah 'Situs Web Default' di IIS.


Ini jelas mengarahkan saya ke arah yang benar. Akhirnya saya telah meletakkan <clear /> di direktori induk karena itu adalah placeholder kosong. Saya percaya masalah sebenarnya adalah bahwa itu membersihkan rakitan yang direferensikan aplikasi saya yang mencegah rakitan aplikasi memuat.
Doug Lampe

Saya mengalami ini juga - menghapus rakitan yang dipilih secara eksplisit alih-alih membersihkan daftar bekerja dengan baik.
Arve Systad

2

Dalam situasi saya, ini terkait dengan jenis proyek Situs Web / Aplikasi Web. Kami baru saja pindah ke MVC dan harus mengubahnya menjadi Aplikasi Web.

Jadi, solusinya sederhana: pilih situs web Anda di Solution Explorer dan hapus dari solusi, lalu klik kanan pada solusi dan pilih Tambah -> Proyek yang Ada ( bukan Situs Web ), kompilasi ulang situs web.


2

Posting lama tetapi saya mengalami kesalahan ini ketika mencoba mengonversi dari proyek situs web ke proyek aplikasi web.

Ikuti instruksi di Tautan ini . Saya masih mendapat kesalahan global.asax tetapi yang saya lakukan hanyalah menghapusnya dan menambahkannya kembali dengan mengklik kanan pada proyek di studio visual dan memilih tambahkan item baru. Tambahkan file global.asax dan itu berhasil.


2

Sayangnya, tidak ada yang berhasil untuk saya. Perbaikan yang saya temukan lebih spesifik untuk pengembangan, khususnya, debugging pada mesin lokal Anda. Juga sayangnya, itu tidak benar-benar memperbaiki masalah seperti yang saya harapkan, tetapi jika Anda kehabisan akal, ini mungkin membuat Anda berjalan lagi.

TL; DR: Di properti proyek, di tab web, di bawah Server, Pilih Gunakan Server Web IIS Lokal. Alamat,

http://localhost/MyApp" 

sudah diisi (saya punya IIS7, .NET 4.0). Apa yang awalnya dipilih adalah "Gunakan Visual Studio Development Server" dengan lintasan Virtual "/"

Apa yang benar-benar membingungkan saya adalah kenyataan bahwa tidak ada yang berhasil, saya memeriksa semua saran yang dapat saya temukan di SO, dan tidak ada yang akan berhasil. Yang aneh adalah, kesalahan itu (tampaknya, sudah beberapa bulan sejak saya terakhir melihat) terwujud ketika saya menambahkan file ascx baru yang mirip dengan yang sudah ada yang ditambahkan dari proyek lama .net 2.0 (menurut saya) yang akan memungkinkan pengelolaan pengguna khusus dari dalam aplikasi. Itu berfungsi, dengan indah, untuk waktu yang lama, sampai saya mencoba menambahkan file baru ini. Setelah menambahkannya, dan melihat kesalahannya, saya segera mengembalikan semua perubahan, tetapi kesalahan Global.ascx tidak akan hilang, bahkan tidak menghapus seluruh proyek dan mendapatkan kembali yang terbaru dari kontrol sumber.


2

Saya telah mengubah solusi saya dari VS2003 ke VS2010 dan mengalami masalah saat mengonversi proyek aplikasi web.

Saya mengalami masalah yang persis sama dan tidak ada jawaban yang berhasil untuk saya.

Apa yang berhasil bagi saya adalah:

  • Klik kanan pada solusi dan pilih Pengelola Konfigurasi
  • Melihat setiap konfigurasi di daftar drop-down 'Konfigurasi solusi aktif'.
  • Sertakan aplikasi web dalam build dengan mencentang kotak 'Build'.

Tampaknya masalah yang saya alami selama konversi telah menghapus proyek aplikasi web dari pembangunan karena beberapa alasan.

Semoga jawaban ini membantu orang lain yang memiliki masalah yang sama ...


1

Jika Anda membangun kembali atau mengubah proyek dan memindahkan file dari yang lama, pastikan untuk memeriksa blok Warisi global Anda. Dalam kasus saya, proyek / solusi sebelumnya bernama intranet, dan saya telah membuatnya kembali sebagai Intranet, tetapi ketika saya memindahkan file, itu tidak menyukai huruf kecil (ya). Lakukan saja penelusuran umum nama-nama file.



1

Saya mengalami masalah serupa di mana saya menerima kesalahan ini pada sebuah proyek.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Setelah menghabiskan beberapa waktu saya mencurigai suatu fungsi dengan kemungkinan kesalahan di Kelas .. kemudian berkomentar bahwa fungsi tertentu masalah saya teratasi.

Saya tidak tahu mengapa Visual Studio tidak memberi saya kesalahan khusus itu pada waktu debugging. Tetapi kesalahan ini mungkin terjadi karena beberapa kesalahan pada file kelas ..


1

Ini bekerja untuk saya: Hal pertama: tampaknya apa pun yang Anda katakan kepada studio visual, ide selalu mencari file di: bin (untuk aplikasi web dan tentu saja dalam kasus saya) Jadi, bahkan ketika saya mengatakan kepada studio visual jalur tertentu untuk memuat file, ide terus mencari jalur yang salah. Jadi saya mengubah: Build / Configuration Manager tipe output ke: Release (sebelumnya saya membersihkan solusinya, bahkan secara manual) jadi, ketika file .dll dibuat maka saya pindah secara manual ke folder "bin" di bawah proyek / solusi map. Semoga ini bisa membantu !!


1

Dalam kasus saya, Itu karena prosesor target saya (x64) saya mengubahnya menjadi x86 membersihkan proyek, memulai kembali VS (2012) dan membangun kembali proyek; lalu itu hilang.


1

Ketika saya mengalami masalah ini baru-baru ini saya mencoba semua yang disebutkan di sini tetapi tidak berhasil. Setelah merobek rambut saya, saya memutuskan untuk mencoba menghapus seluruh basis kode saya (ya, sangat putus asa!) Dan kemudian mengunduh ulang semuanya dari repositori kode saya. Setelah melakukan ini semuanya bekerja dengan baik sekali lagi.

Tampaknya solusi ekstrem tetapi saya hanya berpikir saya akan memasukkannya di sini karena belum disebutkan sebelumnya di utas ini.

(Perhatikan bahwa di lain waktu saya mengalami masalah ini, adalah ketika Global.asax mewarisi dari komponen yang perlu didaftarkan pada mesin host. Ini hilang sehingga saya mendapat masalah yang sama).

TL; DR; Jika semua jawaban di utas ini tidak berhasil untuk Anda, coba hapus lalu unduh ulang seluruh basis kode Anda!


1

Saya telah mengalami masalah ini beberapa kali dan dalam setiap kasus saya sedang membangun kembali komputer atau beralih ke komputer baru. Langkah pertama saya (selain memperbarui mesin dan menginstal Visual Studio) adalah menarik proyek saya dari Git dan mengujinya.

Saya mengalami kesalahan ini setiap kali karena saya mencoba mengakses kode lokal saya sebelum menyusunnya. Anda lihat, saya memiliki pengaturan Git dan Subversion untuk mengabaikan folder bin / build saya, jadi setelah menarik dari repositori saya, saya lupa menjalankan build yang menarik paket yang diperlukan dari Nuget (karena saya meminta Git / SVN mengabaikannya juga) dan membuat DLL diperlukan untuk benar-benar menjalankan aplikasi saya.

Saya ragu ini akan menyelesaikan masalah kebanyakan orang, tetapi saya tidak melihatnya di daftar solusi potensial jadi saya pikir saya akan menambahkannya.


1

Dalam kasus saya, saya telah menambahkan Global.asax ke proyek WCF untuk bereksperimen dengannya, tetapi memutuskan untuk menghapusnya. Saya menghapusnya dari Solution Explorer, tetapi karena masih ada di dalam folder, pipa masih menemukannya dan menyebabkan kesalahan ini.

Saya menghapus Global.ASAX dan GLobal.asax.cs dari sistem file dan itu menyelesaikan kesalahan.


INI menyelesaikannya untuk saya, terima kasih, tetapi saya juga ingin menambahkan untuk orang lain di masa depan bahwa dalam kasus saya, saya tidak pernah menambahkan Global.asax ke proyek saya. Tetapi seperti yang disebutkan di sini, file global.asax dan global.asax.cs ada di sistem file saya. Ketika saya menghapusnya, bug itu hilang.
stackonfire

1

Telah berada dalam game pengembangan selama hampir 20 tahun, kastanye ini terus mengganggu saya di banyak proyek.

Karena itu, hari ini ketika mengalami masalah yang sama ini lagi, terhadap proyek lain, saya memutuskan untuk menyelidiki lebih lanjut dan saya yakin ini terkait dengan lokasi folder Bin ... atau lebih khusus lagi, jalur keluaran dari folder bin.

Bagi saya, untuk aplikasi web berbasis layanan sederhana yang dikonfigurasi untuk menjalankan / debug melalui IIS, itu mengubah jalur keluaran dari bin \ debug ke bin \ yang menyelesaikannya

Proyek> Properti> Bangun> Jalur keluaran

Sangat berharap ini membantu.


0

Saya bingung dengan masalah yang sama. Saya mencoba untuk menghapus dan danglobal.asax (VS2010 ditutup sebelum menambahkan). Membersihkan proyek / solusi, memeriksa setiap perubahan dalam konfigurasi aplikasi web dan hal-hal lain yang telah berfungsi untuk orang lain di sini di utas SO. Saya akhirnya membersihkan solusinya, menghapus folder bin / obj dan menghentikan semua server pengembangan VS2010 yang berjalan kemudian saya mengembalikan semua perubahan kembali dan menemukan aplikasi berjalan lagi. Saya membuat ulang hal yang sama dan sekarang berfungsi dengan baik.

Terjadi lagi dan kali ini solusi ini berhasil untuk saya.


0

buka manajer konfigurasi di bawah properti untuk solusi Anda. Kemudian pastikan semua proyek dan sedang dibangun, dan ini tidak akan menjadi masalah.


0

Saya harus menghapus (duplikat) file dari disk yang tidak termasuk dalam proyek. Sepertinya duplikat itu disebabkan oleh penggantian nama yang gagal. Nama file berbeda, tetapi kode yang sama.

Setelah menghapus semua file oof. * Saya dapat memindai.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

dalam kasus saya itu adalah IISExpress yang menunjuk ke port yang sama dengan IIS untuk menyelesaikannya

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

dan cari portnya, Anda akan menemukan <site>...</site>tag yang perlu Anda hapus atau beri komentar


0

Saya mengalami masalah ini saat menerapkan hanya di server prod. Di lingkungan saya yang lain, ini berfungsi ... Saya baru saja menghapus hal-hal di folder bin kemudian menerbitkan ulang dan berfungsi setelah itu.


0

Jika Anda menggunakan Visual Studio, Anda mungkin mencoba menjalankan aplikasi dalam Mode Rilis, coba ubah ke Mode Debug.


0

Saya telah mencoba untuk membangun kembali solusi dan menghapus file Sementara ASP.NET tidak berhasil.
Namun setelah menjalankan IISRESET error tersebut menghilang.

Pembaruan : Saya mengalami masalah yang sama lagi 1 bulan kemudian. Saya telah memperhatikan bahwa MyWebsite.DLL ada di folder bin, tetapi tidak ada di File ASP.NET Sementara (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files). Saya sudah mencoba beberapa hal, yang disarankan untuk ini dan "Pesan Kesalahan Parser: Tidak dapat memuat jenis" dalam pertanyaan Global.asax (saya sebenarnya lupa tentang jawaban saya sendiri), tetapi kesalahan tersebut menghilang lagi setelah IISRESET


0

Dalam kasus saya VS 2017, beban solusi ringan menyebabkan masalah ini. Saya menonaktifkannya & memulai ulang VS kemudian membangun kembali solusi saya & masalah hilang.


2
Apa solusi "ringan"?
Fandango68

0

Hanya ingin menambahkan dua sen saya. Saya menerima kesalahan yang sama, dan saya mencoba semua saran tetapi tidak berhasil. Situasi saya mungkin berbeda?

Ternyata, file "AssemblyInfo.cs" yang dibuat secara otomatis memiliki beberapa spasi tidak relevan, yang mencegah saya meluncurkan aplikasi web (melalui debug). Berikut tampilan file tersebut:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Setelah menghabiskan ruang di AssemblyCompany dan AssemblyCopyright, saya akhirnya dapat membangun dan meluncurkan proyek tersebut.

Teramati di lingkungan berikut: --Visual Studio 2017 Community versi 15.3.0 --Win 7 x64 Enterprise - New Project> Visual C #> Web> ASP.NET Web Application> Web Forms

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.