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?
wpf
visual-studio-2010
visual-studio
initializecomponent
user876402
quelle
quelle
Antworten:
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
quelle
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).
quelle
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:
Diese Methode hat bei mir in VS 2015 und nach Angaben anderer Benutzer auch in den Jahren 2017 und 2019 funktioniert
quelle
Dieser Fehler trat beim Refactoring auf, bei dem ich einige Dateien / Ordner umbenannte und die vorausschauenden * .g.cs-Dateien neu generiert werden mussten.
quelle
x:Class
übereinstimmtNamespace.Class
.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:
Es ist fast am Ende der Datei und die einzige Zeile, die Sie haben, ist wahrscheinlich
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:
Diese Zeile weist Visual Studio an, das Projekt als WPF-Projekt zu erstellen. Jetzt sollte Ihre .csproj-Datei unten so aussehen:
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!
quelle
Dies geschah bei mir, als ich versehentlich die Klassenreferenz aus der xaml-Definition löschte:
Ich habe das ersetzt
erste Zeile damit:
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.
quelle
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
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
quelle
xaml
Datei. +1Stellen Sie sicher, in der xaml-Datei
stimmen mit dem Namen 'Project1' und dem Namen 'Page1' überein
quelle
Überprüfen Sie die Designer- Datei.
Ich hatte das gleiche Problem. In meinem Fall war die Ursache, dass die Datei
namespace
für FileName.Designer.cs nicht mit dernamespace
in FileName.cs verwendeten (korrekten) übereinstimmte .Ändern der
namespace
von FileName.Designer.cs anzupassen , dass die FileName.cs das Problem sofort gelöst.quelle
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
und der Code dahinter ist
quelle
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.
quelle
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:
quelle
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!
quelle
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
quelle
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.
quelle
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.
quelle
Eine weitere häufige Ursache für diesen Fehler ist, dass Sie Folgendes getan haben:
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.
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."
quelle
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.
quelle
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.
quelle
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.
quelle
Das hat es für mich gelöst.
Ich hatte die Ressourcen in der Datei App.xaml auskommentiert
Wenn Sie dies erneut kommentieren, wurde der Erstellungsfehler behoben.
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ß.
quelle
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
quelle
<DependentUpon>YourFile.xaml</DependentUpon>
aus irgendeinem Grund gefehlt und das hat es für mich behoben!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
quelle
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.
quelle
Ich habe festgestellt, dass das "Startobjekt" (nicht festgelegt) diesen Fehler für mich verursacht hat.
"Startobjekt" (nicht gesetzt)
quelle
root
zuView
Verzeichnis.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:
Jetzt habe ich meine statischen Ressourcen als definiert
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: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).quelle
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.
quelle
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.
quelle
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:
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.
quelle
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.
quelle