Jika saya membuat proyek baru di Visual Studio 2010 SP1 dan pilih "Aplikasi WPF" dan mencoba untuk membangun aplikasi yang dihasilkan, saya mendapatkan kesalahan
Nama 'InitializeComponent' tidak ada dalam konteks saat ini.
Saya mendapat kesalahan serupa pagi ini ketika saya mencoba membangun proyek saya saat ini. Kemarin, saya tidak punya masalah mengkompilasi dan menjalankannya.
Saya membuat proyek baru dan mendapatkan kesalahan setiap kali saya menyusun proyek. Saya baru saja mengirim proyek ke kolega, dan dia baru saja dikompilasi tanpa kesalahan.
Apa yang salah?
wpf
visual-studio-2010
visual-studio
initializecomponent
pengguna876402
sumber
sumber
Jawaban:
Saya telah menemukan ini beberapa kali dan terus lupa apa yang menyebabkannya. Saya mengalami ini ketika saya mengganti nama namespace pada kode saya di belakang file tetapi tidak di XAML saya.
Jadi periksa apakah Anda sudah melakukan hal yang sama.
The namespace dan kelas nama harus mencocokkan karena mereka berdua bagian dari kelas parsial
sumber
Tindakan Build untuk file .xaml juga harus diatur ke "Halaman", ketika memindahkan file xaml antara proyek pengaturan ini hilang (setidaknya di VS 2010).
sumber
Bagi mereka yang tidak memiliki kesalahan dalam modus Debug, tapi lakukan memiliki kesalahan ditentukan dalam modus Release (dan belum proyek berjalan dengan baik), di sini adalah sesuatu yang sederhana untuk mencoba:
Metode ini bekerja untuk saya di VS 2015, dan menurut pengguna lain, juga 2017 dan 2019
sumber
Saya mengalami kesalahan ini selama refactoring di mana saya mengganti nama beberapa file / folder dan file * .g.cs yang sudah ada sebelumnya perlu dibuat ulang.
sumber
x:Class
cocok denganNamespace.Class
.Ada alasan yang sangat spesifik untuk ini, dan itu ada di pengaturan proyek. Ini biasanya terjadi setiap kali Anda mencoba menambahkan kontrol WPF / jendela ke perpustakaan .NET 2.0 kelas atau proyek. Alasan untuk kesalahan ini adalah bahwa proyek tidak tahu itu membangun kontrol WPF atau jendela dan karena itu mencoba membangunnya sebagai proyek C # 2.0.
Solusi ini melibatkan pengeditan file .csproj. Klik kanan pada proyek yang menyebabkan masalah dan pilih "Unload Project". Klik kanan proyek yang dibongkar dan pilih "Edit .csproj". File .csproj akan terbuka dan Anda dapat melihat XML. cari baris berikut:
Itu dekat akhir file, dan satu-satunya baris yang Anda miliki mungkin
Ini memberitahu Visual Studio untuk membangun proyek sebagai proyek .NET 2.0. Yang ingin kami lakukan adalah memberi tahu Visual Studio bahwa ini sebenarnya adalah proyek WPF, jadi kami harus menambahkan baris berikut:
Baris ini akan memberi tahu Visual Studio untuk membangun proyek sebagai proyek WPF. Sekarang bagian bawah file .csproj Anda akan terlihat seperti ini:
Simpan file .csproj, klik kanan di Solution Explorer dan pilih kompilasi “Reload Project” dan hanya itu, Anda sudah selesai!
sumber
ini terjadi pada saya ketika saya tidak sengaja menghapus referensi kelas dari definisi xaml:
Saya telah mengganti
baris pertama dengan ini:
Saya tahu ini bukan jawaban untuk pertanyaan asli (karena proyek itu dibangun di komputer lain), tetapi pesan kesalahannya sama, jadi mungkin saya akan membantu seseorang dengan situasi ini.
sumber
Anda mungkin mendapatkan kesalahan ini ketika Anda mengimpor kelas dari proyek lain, atau mengubah path file xaml, atau namespace dari file xaml atau di belakang .cs.
Satu: Ini mungkin memiliki namespace yang tidak sama dengan apa yang Anda miliki dalam proyek baru Anda
Seperti yang Anda lihat ruang nama dalam file yang diimpor dimulai dengan nama proyek lama: "TrainerB" , tetapi proyek baru Anda mungkin memiliki nama yang berbeda, jadi ubah saja ke nama proyek baru yang benar, baik dalam file .xaml dan di belakang file .cs.
Dua:
ubah properti file .xaml ke:
Build Action: Sumber Daya Tertanam
Alat Kustom: MSBuild: UpdateDesignTimeXaml
sumber
xaml
file. +1Pastikan di file xaml
cocok dengan nama 'Project1' dan nama 'Page1'
sumber
Periksa file Designer .
Saya punya masalah yang sama. Dalam kasus saya, penyebabnya adalah karena
namespace
untuk FileName.Designer.cs tidak cocok dengan (benar) yangnamespace
digunakan dalam FileName.cs .Mengubah
namespace
dari FileName.Designer.cs untuk menyesuaikan bahwa FileName.cs memecahkan masalah segera.sumber
Saya sudah mengalami ini (walaupun itu sangat salah saya dan disebabkan setelah saya menyalin dan menempelkan beberapa kode di); itu bisa terjadi ketika namespace tidak cocok antara XAML dan kode di belakang
MISALNYA
dan kode di belakangnya adalah
sumber
Saya mengalami ini saat mengganti nama usercontrol. Cara saya memperbaikinya adalah dengan mengomentari InitializeComponent, memverifikasi bahwa semua nama sudah benar (xaml dan kode di belakang), membangun proyek, batalkan komentar InitializeComponent, lalu buat lagi. Sepertinya ada beberapa penyebab / solusi untuk masalah ini, tetapi cara ini melakukannya untuk saya.
sumber
Tidak ada jawaban di atas yang berfungsi untuk saya. Saya mencoba semuanya kecuali yang duplikat. Namun untuk beberapa alasan aneh ini berhasil di proyek lintas platform saya di Visual Studio 2015:
sumber
Saya setuju dengan jawaban di atas bahwa ruang nama harus cocok. Namun, saya punya masalah seperti ini di mana ruang nama cocok.
Untuk memperbaikinya, saya cukup mengubah namespace di XAML menjadi yang INCORRECT, menyimpan, lalu mengubahnya kembali ke yang BENAR. Voila!
sumber
Jika Anda menggunakan Formulir Xamarin dan Anda memindahkan file XAML, "build action" file tersebut diubah. Formulir Xamarin membutuhkan "build action = Embedded Resource".
Terapkan "build action" di Visual Studio:
Select the XAML file -> Properties -> Build Action = Embedded Resource
sumber
Saya coba semua saran di atas. Jika Anda mencoba terlalu berhasil, dapatkan cara yang lebih mudah. Buat halaman baru.xaml kemudian salin kode Anda untuk kelas baru dan hapus kelas XAML dengan masalah. Jangan menghabiskan lebih banyak waktu.
sumber
Bongkar seluruh solusi dan muat kembali. Kemudian Bangun kembali solusi. Ini menyelesaikan masalah bagi saya.
sumber
Penyebab umum lain dari kesalahan ini adalah jika Anda melakukan sesuatu dalam hal ini:
Klik kanan pada folder dalam proyek untuk membuat UserControl baru. Ini membuat file kelas dan xaml yang berasal dari kontrol pengguna di namespace folder.
Kemudian Anda memutuskan untuk mengubah namespace kelas karena Anda benar-benar hanya menggunakan folder untuk organisasi kode. Atribut x: Class tidak akan diperbarui secara otomatis sehingga akan mencari kelas yang tidak ada. Mungkin bisa menggunakan pesan kesalahan yang lebih baik seperti "x: Jenis kelas tidak dapat ditemukan di namesace bla.blaa.blaaa."
sumber
Solusi lain untuk masalah ini adalah dengan hanya mengubah properti-> Bangun Tindakan pada XAML dari Sumber Daya Tertanam ke hal lain, simpan, lalu ubah segera kembali ke Sumber Daya Tertanam. Kesalahan hilang.
sumber
Saya tahu ini dijawab karena alasan yang berbeda, tetapi ini adalah posting yang sangat populer dan saya mengalami masalah yang sama dengan perpustakaan kelas. Dalam kasus ini, ternyata merupakan perubahan dalam namespace saya (dijawab dalam posting ini di sini ) dan bahwa kompiler tidak dapat membangun kembali Window.gics yang mendefinisikan metode InitializeComponent (). Itu tidak bisa karena pustaka kelas tidak memiliki nilai ProjectTypeGuid untuk proyek WPF dalam file csproj. Instruksi untuk ini ada di sini dan di sini . Saya pikir saya akan berbagi kalau-kalau ada orang lain mengalami masalah yang sama. Mengubah ruang nama saja tidak cukup dalam hal ini.
sumber
Ini terjadi pada saya karena uninstaller paket Nuget menghapus semua atribut pada elemen <Application> di App.xaml. Ini termasuk atribut x: Class, yang menentukan nama kelas aplikasi. Jadi kelas parsial yang mengandung metode InitializeComponent () tidak pernah dihasilkan.
Saya memperbaiki masalah dengan mengembalikan App.xaml ke salinan yang dikontrol oleh sumber.
sumber
Ini menyelesaikannya untuk saya.
Saya telah berkomentar sumber daya dalam file App.xaml
Mengomentari ini kembali untuk memperbaiki kesalahan build.
Menggali lebih dalam lagi saya menemukan bahwa file app.g.cs di {Project} \ obj \ debug hanya berisi yang berikut ketika saya meninggalkan sumber daya berkomentar.
sumber
Bagi mereka yang menemukan ini di internet. Periksa file Windows.csproj jika kompilasi ada. Harus ada 2 entri
sumber
<DependentUpon>YourFile.xaml</DependentUpon>
beberapa alasan dan inilah yang memperbaikinya bagi saya!Jika ruang nama sudah benar maka ada kesalahan yang sama,
Tutup saja aplikasi Anda dan buka lagi .
Ini dapat menyelesaikan masalah Anda
sumber
Setelah beberapa tindakan, namespace file .cs dan yang ada di file .xaml mungkin berbeda (dalam xaml lihat x: Class = "namespace.yourType").
Memperbaikinya agar sama.
sumber
Saya telah menemukan bahwa "objek Startup" (Tidak diatur) menyebabkan kesalahan ini untuk saya.
"Objek startup" (Tidak diatur)
sumber
root
keView
direktori.Karena sepertinya ini adalah utas untuk masalah tentang hilangnya 'InitializeComponent', saya akan memasukkan jawaban saya di sini.
Saya juga mengalami masalah ini dan saya sudah mencoba semua yang saya temukan di sini dan di semua Forum lain yang dapat ditemukan Google, namun tidak ada yang menyelesaikan masalah untuk saya. Setelah dua jam mencoba semuanya, saya akhirnya menemukan apa yang salah dengan pengaturan saya .
Dalam proyek kami, kami menggunakan komponen Metro dari MahApps . Pandangan yang membuat saya kesulitan adalah pandangan yang diwarisi dari MetroWindow, seperti ini:
Sekarang, saya telah mendefinisikan sumber daya statis saya sebagai
Begitulah cara saya mendefinisikan Sumberdaya di
UserControl
dalam semua pandangan saya yang lain, jadi itulah yang saya asumsikan akan berfungsi.Namun, tidak demikian halnya dengan
Controls:MetroWindow
! Di sana saya benar-benar membutuhkan definisi sumber daya sebagai berikut:Jadi masalah saya, secara ringkas, adalah
<ResourceDictionary>
tag yang hilang . Saya benar-benar tidak tahu mengapa ini menghasilkan kesalahan 'InitializeComponent' dan anehnya bahkan tidak memproduksinya di setiap mesin milik saya, tapi itulah cara saya memperbaikinya. Semoga ini bisa membantu (0,001% orang yang tersisa menghadapi masalah ini).sumber
Saya baru saja mengalami masalah ini, dan ternyata proyek saya disimpan di folder pengguna saya, yang disimpan di jaringan, dan kami mengalami pemadaman jaringan sesaat. Saya membangun; itu mengeluh bahwa file saya telah dimodifikasi di luar editor (mereka tidak; kunci file baru saja borked), dan itu dibangun dengan baik, menghilangkan kesalahan mengenai
InitializeComponent()
metode ini.BTW, jika Anda bertanya-tanya, mengembangkan sesuatu dari drive jaringan adalah praktik yang buruk. Ini menjadi sangat bermasalah ketika Anda mencoba memanfaatkan kode terkelola .NET; dalam pengalaman saya, itu aneh setiap kali Anda membangun. Saya lupa untuk menempatkan proyek kecil ini di folder yang tepat, dan akhirnya membayar harganya.
sumber
Penjelasan lain yang mungkin adalah bahwa Anda membangun x86. Klik kanan Solusi Anda dan pilih Manajer Konfigurasi. Lihat apakah Anda membangun x86 bukan CPU Apa pun.
sumber
Jadi saya menyadari ini adalah pertanyaan yang lebih tua, tetapi kami memiliki masalah yang sama. Kami dapat membangun proyek menggunakan VS2012, tetapi tidak menggunakan msbuild dari baris perintah. Saya masuk ke file .proj dan melihat itu tidak memiliki catatan untuk "ProjectTypeGuids" di bawah bagian "PropertyGroup" default, jadi saya menambahkan ini:
yang merupakan GUID proyek untuk WPF. Saya kemudian menghapus dan menambahkan kembali UserControl dan mulai berfungsi. Saya tidak yakin apakah saya harus melakukan langkah terakhir itu, tetapi itu bekerja untuk saya sekarang.
sumber
Karena beberapa alasan setelah menyalin .xaml dan .cs di antara proyek, tindakan pembangunan terkadang berubah. Pastikan tindakan build dari .xaml Anda adalah Halaman.
sumber