Nama 'InitializeComponent' tidak ada dalam konteks saat ini

383

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?

pengguna876402
sumber
3
"Kesalahan" pengguna ini sepertinya mudah dipecahkan, hanya x: Definisi kelas yang tepat. Sampai semuanya baik-baik saja, pengembang harus lebih memperhatikan, tetapi bagaimana jika bukan kesalahan ini tetapi kesalahan hantu dengan pesan kesalahan yang sama? Saya membaca A LOT of workarounds voodoo berbeda dari 2012. Ini akan membantu dari VS pesan kesalahan yang lebih jelas dan OF COURSE perbaikan bug untuk kesalahan hantu dengan pesan yang sama. Pengembang sejak 2012 mengubah build config dari file, proyek, menyalin-menempelkan proyek, menghapus file dari folder App, memulai kembali VS, dll. Bravo MS ... bug 4 tahun dan masih bertambah tua!
juagicre
2
Untuk pembaca yang akan datang dari pertanyaan ini: Masalah ini tampaknya memiliki banyak sumber yang mungkin. Dalam kasus saya beberapa jawaban pertama tidak membantu, tetapi salah satu jawaban lebih jauh adalah benar.
MOnsDaR
@MOnsDaR Namespace dari file Designer adalah masalah bagi saya.
Ctrl S
Walaupun hal ini dapat disebabkan oleh banyak hal (Namespace berganti nama menjadi \ Jenis halaman - MSBuild), saya akhirnya menemukan solusi untuk apa yang menyebabkannya pada proyek yang saya warisi. Dalam file .csproj, saya harus mengubah "ToolsVersion" dari 4 menjadi 15 (VS 2017).
MrMikeJJ

Jawaban:

737

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

namespace ZZZ
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
         //...
    }
}

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
Sean B
sumber
10
Terima kasih, Sean. Saya datang ke sini untuk mengirim jawaban ini di sini tetapi Anda sudah mengalahkan saya untuk itu. Ini persis apa yang telah terjadi dan itu menyelesaikan masalah saya. Komentar Anda harus lebih tinggi di grafik karena itu akan menyelamatkan saya 15 menit.
Magnum
2
Jika nama kelasnya tidak sama, Anda akan mendapatkan kesalahan yang sama
reggaeguitar
2
Ini jawabannya. Tidak yakin mengapa itu belum dipilih, tapi ini dia dan saya mengalami coding Xamarin.
Marcus Shockley
1
Saat refactoring, pastikan untuk memasukkan komentar dan string (Visual Studio 2015)
Gabriel GM
3
Bagi saya (di Xamarain.Forms) menggunakan proyek "Mulai Cepat" yang diunduh dari Azure, itu adalah ruang putih / lekukan di antara xmlns: x = " schemas.microsoft.com/winfx/2009/xaml " dan x: Kelas yang sebelumnya masalah. Saya menghapus ini dan mengetik ulang dan berhasil!
James
241

Tindakan Build untuk file .xaml juga harus diatur ke "Halaman", ketika memindahkan file xaml antara proyek pengaturan ini hilang (setidaknya di VS 2010).

Segfault
sumber
11
Inilah yang terjadi pada saya. Terima kasih!
Ignacio Soler Garcia
3
Setelah copy paste, itu terjadi bahwa tindakan membangun xaml berubah dari halaman ke Konten
Roberto
4
Masih terjadi di Visual Studio 2012 (Pembaruan 2)
gumo
8
Masih terjadi di Visual Studio 2013
Chris Ray
7
Serius ... mengapa Microsoft, mengapa? Apakah Anda membenci saya / kami?
qwertoyo
106

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:

  1. Buka file XAML yang sesuai dengan file xaml.cs yang menyinggung.
  2. Lakukan edit - edit apa saja, seperti tambahkan spasi di suatu tempat
  3. Simpan file dan tutup

Metode ini bekerja untuk saya di VS 2015, dan menurut pengguna lain, juga 2017 dan 2019

BCA
sumber
3
Kamu adalah Pahlawanku hari ini. Terima kasih
Peter pete
14
Cukup gila, ini bekerja untuk saya dengan VS2015. Dan itu memperbaiki semua kesalahan di semua file XAML. Ini benar-benar momen WTF.
William Denman
5
Dang, aku baru saja terbakar oleh yang ini. Untungnya saya menemukan jawaban yang sama yang sudah saya pilih dan komentari. Saya benar-benar harus tetapi ini sebagai catatan post-it di monitor saya.
William Denman
3
Sama di VS2017 dan ini memperbaikinya.
Hans
2
Masih bekerja di VS2019 ...
soulflyman
29
  1. Arahkan ke direktori solusi
  2. Hapus folder \ obj
  3. Bangun kembali solusi

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.

JordanBean
sumber
Sepertinya saya memiliki masalah yang sama, tetapi ini tidak berhasil untuk saya.
LuckyLikey
Lakukan ini setelah memeriksa xaml Anda x:Classcocok dengan Namespace.Class.
Jake
tnx. Trik sederhana ini berhasil untukku.
gil adino
26

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:

<Import Project=…..

Itu dekat akhir file, dan satu-satunya baris yang Anda miliki mungkin

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

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:

<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

Baris ini akan memberi tahu Visual Studio untuk membangun proyek sebagai proyek WPF. Sekarang bagian bawah file .csproj Anda akan terlihat seperti ini:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

Simpan file .csproj, klik kanan di Solution Explorer dan pilih kompilasi “Reload Project” dan hanya itu, Anda sudah selesai!

Shailender Singh
sumber
1
Saya mencoba ini sebelum saya menulis pertanyaan ini dan itu tidak membantu. Saya pikir ini agak aneh bahwa saya tidak dapat mengkompilasi proyek baru tetapi rekan saya dapat ...
user876402
1
Saya mencobanya juga dan itu tidak membantu. Menambahkan impor baru menghasilkan peringatan baru (lihat di bawah) tetapi kesalahan asli masih ada. "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFX.targets" tidak dapat diimpor lagi. Itu sudah diimpor di "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.NETFramework.targets (76,3)". Ini kemungkinan besar merupakan kesalahan pembuatan authoring. Impor selanjutnya ini akan diabaikan. "
user316117
Saya juga baru mencobanya dan tidak berhasil ...?
Sizons
Terima kasih, ini memperbaikinya untuk saya, pada proyek yang saya warisi.
MrMikeJJ
22

ini terjadi pada saya ketika saya tidak sengaja menghapus referensi kelas dari definisi xaml:

Saya telah mengganti

<Window x:Class="myapp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

baris pertama dengan ini:

<RibbonWindow 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

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.

p3d3str1an
sumber
ini bukan masalah saya tapi itu membantu saya melokalkannya. Saya mendapatkan namespace tanpa nama kelas setelahnya
Rivenfall
Ini berhasil untuk saya. terima kasih
Sinaesthetic
Ini membantu saya menemukan masalah saya, dalam kasus saya saya kehilangan baris x: Class, menambahkan ini untuk saya
apc
18

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

namespace TrainerB.MVC.Forms
{
     public partial class AboutDeveloper : ContentPage
     {
          public AboutDeveloper()
          {
               InitializeComponent();
          }
     }
}

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

Properti file XAML

Xaml Namespace Mengoreksi 01

Xaml Namespace Mengoreksi 02

Pembaca Man San
sumber
Oh Tuhan! terima kasih untuk solusi itu. Saya menguji setiap solusi yang ditemukan di sana dan tidak ada yang berhasil. Triknya ada di properti xamlfile. +1
IgniteCoders
16

Pastikan di file xaml

<Page x:Class="Project1.Page1" ...

cocok dengan nama 'Project1' dan nama 'Page1'

Lagu
sumber
Ini menyelesaikan masalah saya.
oktavian
16

Periksa file Designer .

Saya punya masalah yang sama. Dalam kasus saya, penyebabnya adalah karena namespaceuntuk FileName.Designer.cs tidak cocok dengan (benar) yang namespacedigunakan dalam FileName.cs .

Mengubah namespacedari FileName.Designer.cs untuk menyesuaikan bahwa FileName.cs memecahkan masalah segera.

Ctrl S
sumber
14

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

<UserControl x:Class="DockPanel.TreeView" />

dan kode di belakangnya adalah

namespace NotDockPanel
Dave
sumber
Ini mengarahkan saya untuk menemukan bahwa Desainer saya memiliki namespace yang salah. Terima kasih!
Ctrl S
13

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.

Morgan Herlocker
sumber
1
Saya tidak mengganti nama apa pun? Namun solusi ini berhasil untuk saya. * .G.cs dan * .gics tidak ada di folder obj, berkomentar dan membangun proyek menghasilkan file yang hilang. Tidak yakin bagaimana keadaannya.
finlaybob
11

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:

  1. Klik kanan proyek yang menyebabkan masalah di Solution Explorer. Di menu pop-up pilih: Tambah -> Kelas
  2. Pilih lintas platform -> Formulir Halaman Xaml. Simpan nama standar Page1.cs yang cantik dan klik Tambah.
  3. Perhatikan bagaimana masalah InitializeComponent () sebelumnya - hilang begitu saja karena beberapa alasan.
  4. Hapus Page1.cs yang baru dibuat dan lanjutkan pemrograman seolah-olah Visual Studio bekerja dengan baik.
Anders
sumber
Yang ini berhasil untuk saya. Saya telah membuat copy & paste dan mengganti nama usercontrol yang saya miliki, ketika InitializeComponent () mulai gagal.
Rafael Ventura
Bagaimana Anda menemukan perbaikan ini? Saya mencoba yang lain dan ini berhasil. Menggunakan VS 2017, jadi masalahnya saat ini.
blearyeye
Hebat, ini berhasil untuk saya. Terima kasih banyak
IZI
9

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!

heights1976
sumber
Saya akan menambahkan ini sebagai komentar untuk jawaban yang benar, tetapi saya tidak memiliki perwakilan untuk melakukannya :(
heights1976
Terima kasih untuk ini! Bekerja untuk saya setelah menjadi gila mencoba segala macam hal. Solusi saya memang membangun awalnya tanpa kesalahan, kemudian setelah PC tertidur sebentar coba lagi dan mendapatkan kesalahan. Mungkin ada hubungannya dengan mode tidur?
JeremyB
Saya memiliki masalah dan solusi yang sama. Saya percaya itu ada hubungannya dengan IntelliSense. Mengubah namespace di xaml mungkin memicu pembaruan dari bagian yang relevan di db IntelliSense. Ini hanya dugaan saja.
FishySwede
8

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

Tonatio
sumber
Hore untuk Anda tuan / nyonya!
naspinski
7

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.

Diego Venâncio
sumber
7

Bongkar seluruh solusi dan muat kembali. Kemudian Bangun kembali solusi. Ini menyelesaikan masalah bagi saya.

Eldhose
sumber
Terima kasih berhasil untuk saya!
Izion
6

Penyebab umum lain dari kesalahan ini adalah jika Anda melakukan sesuatu dalam hal ini:

  1. Klik kanan pada folder dalam proyek untuk membuat UserControl baru. Ini membuat file kelas dan xaml yang berasal dari kontrol pengguna di namespace folder.

  2. 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."

pengguna1834059
sumber
5

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.

Mark McCorkle
sumber
Ini bekerja dua kali;)
Flou
4

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.

bjhuffine
sumber
3

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.

Richard Beier
sumber
Saya mendapat kesalahan yang sama karena atribut x: Class yang hilang, tetapi tidak ada hubungannya dengan Nuget. Itu menghilang entah bagaimana, mungkin beberapa sihir studio visual.
Ismail Degani
3

Ini menyelesaikannya untuk saya.

Saya telah berkomentar sumber daya dalam file App.xaml

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <!--<ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>-->
  </Application.Resources>
</Application>

Mengomentari ini kembali untuk memperbaiki kesalahan build.

<Application x:Class="MyApp.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

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.

/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
    if (_contentLoaded) {
        return;
    }
    _contentLoaded = true;
    System.Uri resourceLocater = new System.Uri("/MyApp;component/app.xaml", System.UriKind.Relative);

    #line 1 "..\..\..\App.xaml"
    System.Windows.Application.LoadComponent(this, resourceLocater);

    #line default
    #line hidden
}
bic
sumber
3

Bagi mereka yang menemukan ini di internet. Periksa file Windows.csproj jika kompilasi ada. Harus ada 2 entri

<Page Include="YourFile.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>
acsadam0404
sumber
Dalam csproj saya, saya kehilangan <DependentUpon>YourFile.xaml</DependentUpon>beberapa alasan dan inilah yang memperbaikinya bagi saya!
Isaac Baker
3

Jika ruang nama sudah benar maka ada kesalahan yang sama,

Tutup saja aplikasi Anda dan buka lagi .

Ini dapat menyelesaikan masalah Anda

Syed Siraj Wajeed
sumber
buka dan tutup studio visual yang Anda maksud?
LuckyLikey
Beberapa kali, XDesProc.exe (Microsoft Visual Studio XAML UI Designer) akan menghentikan Visual Studio untuk berfungsi dengan baik, dan tidak akan memuat file xaml dengan benar. Jadi Restart Visual Studio menyelesaikan masalah saya. (Anda juga bisa pergi Proses di Task Manager, dan hentikan hanya proses itu tanpa Restart Visual Studio).
Syed Siraj Wajeed
Saya menemukan ini di VS2017. Saya telah mengubah segalanya dan ruang nama benar di mana-mana tetapi panggilan InitializeComponent () memiliki kesalahan, dan kata kunci parsial dalam file xaml.cs memiliki peringatan, sesuatu seperti "kelas parsial hanya memiliki satu file". Saya kebetulan menutup dan membuka kembali solusi dan menemukan kedua masalah ini diselesaikan sendiri.
Steve Crane
3

Setelah beberapa tindakan, namespace file .cs dan yang ada di file .xaml mungkin berbeda (dalam xaml lihat x: Class = "namespace.yourType").

Memperbaikinya agar sama.

Mauro Sampietro
sumber
3

Saya telah menemukan bahwa "objek Startup" (Tidak diatur) menyebabkan kesalahan ini untuk saya.

"Objek startup" (Tidak diatur)

Batu
sumber
Semua spesifikasi lain yang disebutkan dalam pertanyaan itu sama?
marklark
2
Spesifik yang tepat tidak tepat mengingat pertanyaannya tidak jelas tentang bagaimana pengecualian tersebut dimanifestasikan. Namun gejala yang mendasarinya identik sehingga saya tidak melihat ada yang salah dengan jawaban saya. Tujuan saya adalah untuk menambah percakapan karena tidak ada jawaban / komentar yang membantu dalam kasus saya. Saya hanya berusaha untuk menambah basis pengetahuan untuk kesalahan kompilasi sering kali tidak mencolok.
Rock
1
Terima kasih! Itu memecahkan masalah saya! Tampaknya opsi yang diberikan ( objek Startup ) direset secara otomatis ketika saya memindahkan MainWindow.xaml dari rootke Viewdirektori.
AlexMelw
3

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:

<Controls:MetroWindow x:Class="ProjectNamespace.MyView"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      ... >

Sekarang, saya telah mendefinisikan sumber daya statis saya sebagai

<Controls:MetroWindow.Resources>
    <prop:Resources x:Key="LocalizedStrings"/>
    ...
</Controls:MetroWindow.Resources>

Begitulah cara saya mendefinisikan Sumberdaya di UserControldalam 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:

<Controls:MetroWindow.Resources>
    <ResourceDictionary>
        <prop:Resources x:Key="LocalizedStrings"/>
        ...
    </ResourceDictionary>
</Controls:MetroWindow.Resources>

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).

Tom Ladek
sumber
2

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.

JD Ray
sumber
2

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.

Peter
sumber
2

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:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

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.

Jon Nos
sumber
2

Karena beberapa alasan setelah menyalin .xaml dan .cs di antara proyek, tindakan pembangunan terkadang berubah. Pastikan tindakan build dari .xaml Anda adalah Halaman.

Marek Malczewski
sumber