Der Name 'InitializeComponent' existiert im aktuellen Kontext nicht

383

Wenn ich in Visual Studio 2010 SP1 ein neues Projekt erstelle und "WPF-Anwendung" auswähle und versuche, die generierte Anwendung zu erstellen, wird der Fehler angezeigt

Der Name 'InitializeComponent' existiert im aktuellen Kontext nicht.

Ich habe heute Morgen einen ähnlichen Fehler erhalten, als ich versucht habe, mein aktuelles Projekt zu erstellen. Gestern hatte ich kein Problem beim Kompilieren und Ausführen.

Ich habe ein neues Projekt erstellt und den Fehler erhalten, wenn ich das Projekt kompiliert habe. Ich habe das Projekt gerade an einen Kollegen gesendet, und er hat es gerade fehlerfrei kompiliert.

Was ist falsch?

user876402
quelle
3
Dieser Benutzer "Fehler" scheint einfach zu lösen zu sein, nur eine einfache x: Class-Definition. Bis alles in Ordnung ist, sollte der Entwickler mehr Aufmerksamkeit schenken, aber was ist, wenn nicht dieser Fehler, sondern ein Geisterfehler mit derselben Fehlermeldung vorliegt? Ich habe VIELE verschiedene Voodoo-Problemumgehungen aus dem Jahr 2012 gelesen. Es würde von VS eine sehr klare Fehlermeldung und natürlich einen Bugfix für die Geisterfehler mit derselben Meldung helfen. Entwickler ändern seit 2012 die Build-Konfiguration von Dateien, Projekten, kopieren das Projekt, löschen Dateien aus dem App-Ordner, starten VS neu usw. Bravo MS ... ein 4-jähriger Fehler und wird immer älter!
Juagicre
2
Für alle zukünftigen Leser dieser Frage: Dieses Problem scheint viele mögliche Ursachen zu haben. In meinem Fall haben die ersten Antworten nicht geholfen, aber eine der Antworten weiter unten war richtig.
MOnsDaR
@ MOnsDaR Namespace der Designer-Datei war das Problem für mich.
Strg S
Während dies durch viele Dinge verursacht werden kann (Namespace umbenannt in \ Seitentyp - MSBuild), habe ich schließlich die Lösung für die Ursachen in dem von mir geerbten Projekt gefunden. In den .csproj-Dateien musste ich die "ToolsVersion" von 4 auf 15 (VS 2017) ändern.
MrMikeJJ

Antworten:

737

Ich bin dem ein paar Mal begegnet und vergesse immer wieder, was es verursacht. Ich bin darauf gestoßen, als ich den Namespace in meinem Code hinter der Datei umbenannt habe, aber nicht in meiner XAML.

Überprüfen Sie also, ob Sie dasselbe getan haben.

Der Namespace und die Klassennamen müssen übereinstimmen, da beide Teil einer Teilklasse sind

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

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
Sean B.
quelle
10
Vielen Dank, Sean. Ich bin hierher gekommen, um diese Antwort hier zu posten, aber du hast mich schon geschlagen. Genau das war passiert und es hat mein Problem gelöst. Ihr Kommentar sollte weiter oben in den Charts stehen, da ich dadurch 15 Minuten gespart hätte.
Magnum
2
Wenn die Klassennamen nicht gleich sind, erhalten Sie den gleichen Fehler
reggaeguitar
2
Das ist die Antwort. Ich bin mir nicht sicher, warum es nicht ausgewählt wurde, aber das ist es und ich bin auf diese Codierung einiger Xamarin.Forms gestoßen.
Marcus Shockley
1
Gabriel GM
3
Für mich (in Xamarain.Forms) mit einem von Azure heruntergeladenen "Schnellstart" -Projekt war dies der Leerraum / Einzug zwischen xmlns: x = " schemas.microsoft.com/winfx/2009/xaml " und x: Class das Problem. Ich habe dies gelöscht und erneut getippt und es hat funktioniert!
James
241

Die Build-Aktion für die .xaml-Datei muss ebenfalls auf "Seite" gesetzt sein. Wenn Sie eine xaml-Datei zwischen Projekten verschieben, geht diese Einstellung verloren (zumindest in VS 2010).

Segfault
quelle
11
Das war es, was mit mir geschah. Vielen Dank!
Ignacio Soler Garcia
3
Nach dem Kopieren und Einfügen ändert sich die xaml-Build-Aktion von Seite zu Inhalt
Roberto
4
Kommt
8
Kommt immer noch in Visual Studio 2013 vor
Chris Ray
7
Ernsthaft ... warum Microsoft, warum? Hasst du mich / uns
QWERTYO
106

Für diejenigen , die keine Fehler im Debug - Modus, aber nicht die angegebenen Fehler im Release - Modus (und noch das Projekt läuft gut), hier ist etwas einfach zu versuchen:

  1. Öffnen Sie die XAML-Datei, die der fehlerhaften Datei xaml.cs entspricht.
  2. Nehmen Sie eine Bearbeitung vor - jede Bearbeitung, z. B. irgendwo ein Leerzeichen hinzufügen
  3. Speichern Sie die Datei und schließen Sie sie

Diese Methode hat bei mir in VS 2015 und nach Angaben anderer Benutzer auch in den Jahren 2017 und 2019 funktioniert

BCA
quelle
3
Du bist heute mein Held. Vielen Dank
Peter Pete
14
Verrückt genug, das hat bei mir mit VS2015 funktioniert. Und es hat alle Fehler in allen XAML-Dateien behoben. Dies ist ein wirklich WTF-Moment.
William Denman
5
Dang, ich habe mich gerade wieder von diesem verbrannt. Zum Glück habe ich die gleiche Antwort gefunden, die ich bereits hochgestimmt und kommentiert habe. Ich sollte es aber wirklich als Haftnotiz auf meinem Monitor tun.
William Denman
3
Gleiches gilt für VS2017 und dies hat das Problem behoben.
Hans
2
Funktioniert immer noch in VS2019 ...
Soulflyman
29
  1. Navigieren Sie zum Lösungsverzeichnis
  2. Löschen Sie den Ordner \ obj
  3. Erstellen Sie die Lösung neu

Dieser Fehler trat beim Refactoring auf, bei dem ich einige Dateien / Ordner umbenannte und die vorausschauenden * .g.cs-Dateien neu generiert werden mussten.

JordanBean
quelle
Scheint, als hätte ich das gleiche Problem, aber das hat bei mir nicht funktioniert.
LuckyLikey
Tun Sie dies, nachdem Sie überprüft haben, ob Ihr xaml mit dem x:Classübereinstimmt Namespace.Class.
Jake
tnx. Dieser einfache Trick hat es für mich getan.
Gil Adino
26

Dafür gibt es einen ganz bestimmten Grund, der in den Projekteinstellungen enthalten ist. Dies geschieht normalerweise immer dann, wenn Sie versuchen, einer .NET 2.0-Klassenbibliothek oder einem Projekt ein WPF-Steuerelement / -Fenster hinzuzufügen. Der Grund für diesen Fehler ist, dass das Projekt nicht weiß, dass es ein WPF-Steuerelement oder -Fenster erstellt, und daher versucht, es als C # 2.0-Projekt zu erstellen.

Die Lösung besteht darin, die .csproj-Datei zu bearbeiten. Klicken Sie mit der rechten Maustaste auf das Projekt, das das Problem verursacht, und wählen Sie "Projekt entladen". Klicken Sie mit der rechten Maustaste auf das entladene Projekt und wählen Sie ".csproj bearbeiten". Die .csproj-Datei wird geöffnet und Sie können das XML sehen. Suchen Sie nach der folgenden Zeile:

<Import Project=…..

Es ist fast am Ende der Datei und die einzige Zeile, die Sie haben, ist wahrscheinlich

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

Dadurch wird Visual Studio angewiesen, das Projekt als .NET 2.0-Projekt zu erstellen. Wir möchten Visual Studio mitteilen, dass es sich tatsächlich um ein WPF-Projekt handelt. Daher müssen wir die folgende Zeile hinzufügen:

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

Diese Zeile weist Visual Studio an, das Projekt als WPF-Projekt zu erstellen. Jetzt sollte Ihre .csproj-Datei unten so aussehen:

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

Speichern Sie die .csproj-Datei, klicken Sie mit der rechten Maustaste im Projektmappen-Explorer darauf und wählen Sie "Projekt neu laden". Das war's, fertig!

Shailender Singh
quelle
1
Ich habe es versucht, bevor ich diese Frage geschrieben habe, und es hilft nicht. Ich finde es etwas seltsam, dass ich kein neues Projekt kompilieren kann, aber mein Kollege kann ...
user876402
1
Ich habe es auch versucht und es hat nicht geholfen. Das Hinzufügen des neuen Imports führte zu einer neuen Warnung (siehe unten), aber der ursprüngliche Fehler ist weiterhin vorhanden. "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFX.targets" kann nicht erneut importiert werden. Es wurde bereits unter "C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.NETFramework.targets (76,3)" importiert. Dies ist höchstwahrscheinlich ein Build-Authoring-Fehler. Dieser nachfolgende Import wird ignoriert. "
user316117
Ich habe es auch gerade versucht und es hat nicht funktioniert ...?
Sizons
Vielen Dank, das hat es für mich behoben, bei einem Projekt, das ich geerbt habe.
MrMikeJJ
22

Dies geschah bei mir, als ich versehentlich die Klassenreferenz aus der xaml-Definition löschte:

Ich habe das ersetzt

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

erste Zeile damit:

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

Ich weiß, dass dies nicht die Antwort auf die ursprüngliche Frage ist (da dieses Projekt auf einem anderen Computer erstellt wird), aber die Fehlermeldung war dieselbe. Vielleicht helfe ich jemandem in dieser Situation.

p3d3str1an
quelle
Das war nicht gerade mein Problem, aber es hat mir geholfen, es zu lokalisieren. Ich hatte den Namespace danach ohne den Klassennamen
Rivenfall
Das hat bei mir funktioniert. danke
Sinaesthetic
Dies hat mir geholfen, mein Problem zu finden. In meinem Fall fehlte mir die x: Class-Zeile, und ich habe dies für mich behoben
apc
18

Möglicherweise wird dieser Fehler angezeigt, wenn Sie eine Klasse aus einem anderen Projekt importieren oder den Pfad der xaml-Datei oder den Namespace der xaml-Datei oder der CS-Datei ändern.

Erstens: Möglicherweise hat es einen Namespace, der nicht mit dem übereinstimmt, den Sie in Ihrem neuen Projekt haben

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

Wie Sie sehen können, beginnt der Namensraum in der importierten Datei mit dem alten Projektnamen: "TrainerB" , aber Ihr neues Projekt hat möglicherweise einen anderen Namen. Ändern Sie ihn einfach in den richtigen neuen Projektnamen, sowohl in der .xaml-Datei als auch in die hinter .cs Datei.

Zwei:

Ändern Sie die Eigenschaften der .xaml-Datei in:

Build-Aktion: Eingebettete Ressource

Benutzerdefiniertes Tool: MSBuild: UpdateDesignTimeXaml

Eigenschaften der Xaml-Datei

Xaml-Namespace-Korrektur 01

Xaml-Namespace-Korrektur 02

Leser Man San
quelle
Oh mein Gott! Vielen Dank für diese Lösung. Ich habe jede dort gefundene Lösung getestet und nichts funktioniert. Der Trick lag in den Eigenschaften der xamlDatei. +1
IgniteCoders
16

Stellen Sie sicher, in der xaml-Datei

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

stimmen mit dem Namen 'Project1' und dem Namen 'Page1' überein

Lied
quelle
Dies löste mein Problem.
Oktav
16

Überprüfen Sie die Designer- Datei.

Ich hatte das gleiche Problem. In meinem Fall war die Ursache, dass die Dateinamespace für FileName.Designer.cs nicht mit der namespacein FileName.cs verwendeten (korrekten) übereinstimmte .

Ändern der namespacevon FileName.Designer.cs anzupassen , dass die FileName.cs das Problem sofort gelöst.

Strg S.
quelle
14

Ich hatte dies (obwohl es sehr meine Schuld war und verursacht wurde, nachdem ich Code kopiert und eingefügt hatte); Dies kann auftreten, wenn der Namespace nicht zwischen der XAML und dem Code dahinter übereinstimmt

Z.B

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

und der Code dahinter ist

namespace NotDockPanel
Dave
quelle
Dies führte mich zu der Feststellung, dass mein Designer einen falschen Namespace hatte. Vielen Dank!
Strg S
13

Dies ist mir beim Umbenennen einer Benutzersteuerung begegnet. Ich habe das Problem behoben, indem ich InitializeComponent auskommentiert, überprüft habe, ob alle Namen korrekt sind (xaml und Code dahinter), das Projekt erstellt, InitializeComponent auskommentiert und dann erneut erstellt hat. Es hört sich so an, als gäbe es einige Ursachen / Lösungen für dieses Problem, aber auf diese Weise hat es für mich funktioniert.

Morgan Herlocker
quelle
1
Ich habe nichts umbenannt? Diese Lösung hat jedoch bei mir funktioniert. Die * .g.cs und * .gics fehlten im obj-Ordner. Durch Auskommentieren und Erstellen des Projekts wurden die fehlenden Dateien generiert. Ich bin mir nicht sicher, wie es in diesen Zustand gekommen ist.
Finlaybob
11

Keine der oben genannten Antworten hat bei mir funktioniert. Ich habe sie alle ausprobiert, außer den doppelten. Aus irgendeinem seltsamen Grund funktionierte dies jedoch in meinem plattformübergreifenden Projekt in Visual Studio 2015:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, das das Problem verursacht. Wählen Sie im Popup-Menü: Hinzufügen -> Klasse
  2. Wählen Sie plattformübergreifend -> Forms Xaml-Seite. Behalten Sie den hübschen Standardnamen Page1.cs bei und klicken Sie auf Hinzufügen.
  3. Beachten Sie, dass das vorherige InitializeComponent () - Problem aus irgendeinem Grund verschwunden ist.
  4. Löschen Sie die neu erstellte Seite 1.cs und fahren Sie mit der Programmierung fort, als ob Visual Studio einwandfrei funktioniert hätte.
Anders
quelle
Dieser hat für mich gearbeitet. Ich hatte ein Benutzersteuerelement kopiert und eingefügt und umbenannt, als InitializeComponent () fehlschlug.
Rafael Ventura
Wie um alles in der Welt sind Sie auf dieses Problem gestoßen? Ich habe alles andere versucht und das hat funktioniert. Bei Verwendung von VS 2017 ist das Problem also aktuell.
blearyeye
Großartig, das ist für mich funktioniert. Vielen Dank
IZI
9

Ich stimme der obigen Antwort zu, dass die Namespaces übereinstimmen müssen. Ich hatte jedoch ein Problem wie dieses, bei dem die Namespaces übereinstimmten.

Um dies zu beheben, habe ich einfach den Namespace in der XAML in einen INCORRECT-Namespace geändert, ihn gespeichert und dann wieder in den CORRECT-Namespace geändert. Voila!

Höhen1976
quelle
Ich hätte dies als Kommentar zur richtigen Antwort hinzugefügt, aber ich habe nicht den Repräsentanten, um dies zu tun :(
heights1976
Danke dafür! Arbeitete für mich, nachdem ich verrückt geworden war und alle möglichen Dinge ausprobiert hatte. Meine Lösung wurde ursprünglich ohne Fehler erstellt. Nachdem der PC eine Weile eingeschlafen war, versuchte ich es erneut und bekam den Fehler. Vielleicht etwas mit dem Schlafmodus zu tun?
JeremyB
Ich hatte das gleiche Problem und die gleiche Lösung. Ich glaube, es hatte etwas mit IntelliSense zu tun. Das Ändern des Namespace in der xaml hat wahrscheinlich eine Aktualisierung der relevanten Teile in der IntelliSense-Datenbank ausgelöst. Dies ist jedoch nur eine Vermutung.
FishySwede
8

Wenn Sie Xamarin Forms verwenden und eine XAML-Datei verschieben, wird die "Build-Aktion" der Datei geändert. Für Xamarin Forms ist "build action = Embedded Resource" erforderlich.

Wenden Sie "Build-Aktion" in Visual Studio an:

Select the XAML file -> Properties -> Build Action = Embedded Resource

Tonatio
quelle
Hurra für Sie, Sir / Madam!
Naspinski
7

Ich versuche alle obigen Vorschläge. Wenn Sie es auch ohne Erfolg versuchen, erhalten Sie den einfacheren Weg. Erstellen Sie eine neue page.xaml, kopieren Sie dann Ihren Code für die neue Klasse und löschen Sie die Klasse XAML bei Problemen. Verbringen Sie nicht mehr Zeit.

Diego Venâncio
quelle
7

Entladen Sie die gesamte Lösung und laden Sie sie erneut. Erstellen Sie dann die Lösung neu. Dies löste das Problem für mich.

Eldhose
quelle
Danke hat für mich funktioniert!
Izion
6

Eine weitere häufige Ursache für diesen Fehler ist, dass Sie Folgendes getan haben:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner im Projekt, um ein neues UserControl zu erstellen. Dadurch wird eine Klassen- und XAML-Datei erstellt, die von der Benutzersteuerung im Namespace des Ordners abgeleitet wird.

  2. Dann entscheiden Sie sich, den Namespace der Klasse zu ändern, weil Sie wirklich nur Ordner für die Organisation von Code verwenden. Das x: Class-Attribut wird nicht automatisch aktualisiert, sodass nach einer nicht vorhandenen Klasse gesucht wird. Könnte wahrscheinlich eine bessere Fehlermeldung wie "x: Klassentyp konnte nicht in Namesace bla.blaa.blaaa gefunden werden."

user1834059
quelle
5

Eine andere Lösung für dieses Problem besteht darin, die Eigenschaft-> Build-Aktion in der XAML von "Eingebettete Ressource" in "Alles andere" zu ändern, zu speichern und dann wieder in "Eingebettete Ressource" zu ändern. Der Fehler verschwindet.

Mark McCorkle
quelle
Es hat zweimal funktioniert;)
Flou
4

Ich weiß, dass dies aus einem anderen Grund beantwortet wurde, aber dies ist ein sehr erfolgreicher Beitrag, und ich war auf dasselbe Problem mit einer Klassenbibliothek gestoßen. In diesem Fall stellte sich heraus, dass es sich sowohl um eine Änderung in meinem Namespace handelte (in diesem Beitrag hier beantwortet ) als auch darum, dass der Compiler die Window.gics, die die InitializeComponent () -Methode definiert, nicht neu erstellen konnte. Dies war nicht möglich, da in der Klassenbibliothek der ProjectTypeGuid-Wert für WPF-Projekte in der csproj-Datei fehlte. Anweisungen dazu finden Sie hier und hier . Ich dachte, ich würde teilen, falls jemand anderes auf dasselbe Problem stößt. In diesem Fall reicht es nicht aus, nur den Namespace zu ändern.

bjhuffine
quelle
3

Dies ist mir passiert, weil ein Nuget-Paket-Deinstallationsprogramm alle Attribute des <Application> -Elements in App.xaml weggeblasen hat. Dies beinhaltete das x: Class-Attribut, das den Namen der Anwendungsklasse angibt. Daher wurde die Teilklasse, die die InitializeComponent () -Methode enthält, nie generiert.

Ich habe das Problem behoben, indem ich App.xaml auf die quellengesteuerte Kopie zurückgesetzt habe.

Richard Beier
quelle
Ich habe den gleichen Fehler aufgrund eines fehlenden x: Class-Attributs erhalten, aber es hatte nichts mit Nuget zu tun. Es ist einfach irgendwie verschwunden, wahrscheinlich etwas visuelle Studiomagie.
Ismail Degani
3

Das hat es für mich gelöst.

Ich hatte die Ressourcen in der Datei App.xaml auskommentiert

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

Wenn Sie dies erneut kommentieren, wurde der Erstellungsfehler behoben.

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

Als ich etwas tiefer ging, stellte ich fest, dass die Datei app.g.cs in {Project} \ obj \ debug nur Folgendes enthielt, als ich die Ressource kommentiert ließ.

/// <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
quelle
3

Für diejenigen, die dies im Internet finden. Überprüfen Sie die Datei Windows.csproj, ob die Kompilierung vorhanden ist. Es sollten 2 Einträge vorhanden sein

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

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>
acsadam0404
quelle
In meinem csproj hat mir das <DependentUpon>YourFile.xaml</DependentUpon>aus irgendeinem Grund gefehlt und das hat es für mich behoben!
Isaac Baker
3

Wenn die Namespaces korrekt sind, liegt auch der gleiche Fehler vor:

Schließen Sie einfach Ihre Anwendung und öffnen Sie sie erneut .

Dies kann Ihr Problem lösen

Syed Siraj Wajeed
quelle
visuelles Studio öffnen und schließen meinst du?
LuckyLikey
Manchmal stoppt XDesProc.exe (Microsoft Visual Studio XAML-UI-Designer) das Visual Studio, um ordnungsgemäß zu funktionieren, und lädt die xaml-Datei nicht ordnungsgemäß. Ein Neustart von Visual Studio hat mein Problem gelöst. (Sie können die Prozesse auch im Task-Manager aufrufen und nur diesen Prozess stoppen, ohne Visual Studio neu zu starten.)
Syed Siraj Wajeed
Ich habe dies in VS2017 entdeckt. Ich hatte alles andere geändert und die Namespaces waren überall korrekt, aber die InitializeComponent () -Aufrufe hatten den Fehler und die Teilschlüsselwörter in den xaml.cs-Dateien hatten eine Warnung, so etwas wie "Teilklasse hat nur eine Datei". Ich habe die Lösung geschlossen und erneut geöffnet und festgestellt, dass sich beide Probleme von selbst gelöst haben.
Steve Crane
3

Nach einigen Aktionen kann der Namespace der CS-Datei und der in der XAML-Datei unterschiedlich sein (suchen Sie in XAML nach x: Class = "namespace.yourType").

Korrigieren Sie sie so, dass sie gleich sind.

Mauro Sampietro
quelle
3

Ich habe festgestellt, dass das "Startobjekt" (nicht festgelegt) diesen Fehler für mich verursacht hat.

"Startobjekt" (nicht gesetzt)

Felsen
quelle
Alle anderen in der Frage genannten Besonderheiten waren gleich?
Marklark
2
Genaue Einzelheiten sind nicht genau, wenn man bedenkt, dass nicht klar war, wie sich die Ausnahme manifestiert hat. Das zugrunde liegende Symptom ist jedoch identisch, daher sehe ich nichts Falsches an meiner Antwort. Meine Absicht war es, das Gespräch zu erweitern, da in meinem Fall keine Antwort / kein Kommentar hilfreich war. Ich habe lediglich versucht, die Wissensbasis für die oftmals unscheinbaren Kompilierungsfehler zu erweitern.
Rock
1
Vielen Dank! Es hat mein Problem gelöst! Es scheint , dass die gegebene Option ( Startobjekt ) wurde automatisch zurückgesetzt , wenn ich die MainWindow.xaml aus bewegt rootzu ViewVerzeichnis.
AlexMelw
3

Da dies der Anlaufpunkt für das Problem bezüglich fehlender 'InitializeComponent' zu sein scheint, werde ich meine Antwort hier einfügen.

Auch ich hatte dieses Problem und habe alles ausprobiert, was ich hier und in allen anderen Foren gefunden habe, die Google finden konnte, aber keines hat das Problem für mich gelöst. Nachdem ich zwei Stunden lang alles ausprobiert hatte, fand ich endlich heraus, was mit meinem Setup nicht stimmte .

In unserem Projekt verwenden wir Metro-Komponenten von MahApps . Die Ansicht, die mir Probleme bereitete, war eine Ansicht, die von MetroWindow geerbt wurde, wie folgt:

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

Jetzt habe ich meine statischen Ressourcen als definiert

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

So habe ich Ressourcen definiert UserControl s in all meinen anderen Ansichten definiert, also habe ich angenommen, dass dies funktionieren wird.

Dies war jedoch nicht der Fall bei Controls:MetroWindow! Dort brauchte ich unbedingt die Ressourcendefinition wie folgt:

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

Zusammenfassend war mein Problem also ein fehlendes <ResourceDictionary>Tag. Ich weiß wirklich nicht, warum dies den Fehler 'InitializeComponent' verursacht hat, und es hat seltsamerweise nicht einmal auf jeder meiner Maschinen erzeugt, aber so habe ich ihn behoben. Ich hoffe, dies hilft (die restlichen 0,001% der Menschen, die auf dieses Problem stoßen).

Tom Ladek
quelle
2

Ich bin gerade auf dieses Problem gestoßen, und es stellte sich heraus, dass mein Projekt in meinem Benutzerordner gespeichert ist, der im Netzwerk gespeichert ist, und wir hatten einen vorübergehenden Netzwerkausfall. Ich habe einen Build gemacht; Es wurde beanstandet, dass meine Dateien außerhalb des Editors geändert wurden (sie hatten es nicht getan; die Dateisperren wurden gerade blockiert), und es funktionierte einwandfrei, wodurch der Fehler bezüglich der InitializeComponent()Methode beseitigt wurde .

Übrigens, falls Sie sich fragen, ist es eine schlechte Praxis, etwas von einem Netzwerklaufwerk zu entwickeln. Dies ist besonders problematisch, wenn Sie versuchen, den verwalteten Code von .NET zu nutzen. Nach meiner Erfahrung flippt es jedes Mal aus, wenn Sie bauen. Ich habe vergessen, dieses kleine Wegwerfprojekt in den richtigen Ordner zu legen, und habe am Ende den Preis bezahlt.

JD Ray
quelle
2

Eine andere mögliche Erklärung ist, dass Sie gegen x86 bauen. Klicken Sie mit der rechten Maustaste auf Ihre Lösung und wählen Sie Configuration Manager. Überprüfen Sie, ob Sie gegen x86 anstelle einer beliebigen CPU bauen.

Peter
quelle
2

Mir ist klar, dass dies eine ältere Frage ist, aber wir hatten ein ähnliches Problem. Wir konnten ein Projekt mit VS2012 erstellen, aber nicht mit msbuild über die Befehlszeile. Ich ging in die .proj-Datei und bemerkte, dass es keinen Datensatz für "ProjectTypeGuids" im Standardabschnitt "PropertyGroup" gab, also fügte ich Folgendes hinzu:

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

Das ist die Projekt-GUID für WPF. Ich habe dann das UserControl gelöscht und wieder hinzugefügt und es hat funktioniert. Ich bin mir nicht sicher, ob ich diesen letzten Schritt machen musste, aber es funktioniert jetzt für mich.

Jon Nos
quelle
2

Aus irgendeinem Grund ändert sich die Build-Aktion nach dem Kopieren von .xaml und .cs zwischen Projekten manchmal. Bitte stellen Sie sicher, dass die Build-Aktion Ihrer .xaml-Seite ist.

Marek Malczewski
quelle