Si je crée un nouveau projet dans Visual Studio 2010 SP1 et sélectionne "Application WPF" et essaie de créer l'application générée, j'obtiens l'erreur
Le nom «InitializeComponent» n'existe pas dans le contexte actuel.
J'ai eu une erreur similaire ce matin lorsque j'ai essayé de construire mon projet actuel. Hier, je n'ai eu aucun problème à le compiler et à l'exécuter.
J'ai créé un nouveau projet et j'ai obtenu l'erreur chaque fois que j'ai compilé le projet. Je viens d'envoyer le projet à un collègue et il vient de le compiler sans aucune erreur.
Qu'est-ce qui ne va pas?
Réponses:
Je l'ai rencontré plusieurs fois et j'oublie toujours ce qui en est la cause. Je suis tombé sur cela lorsque j'ai renommé l'espace de noms sur mon code derrière le fichier mais pas dans mon XAML.
Vérifiez donc si vous avez fait de même.
L' espace de noms et les noms de classe doivent correspondre car ils font tous deux partie d'une classe partielle
la source
L'action de génération pour le fichier .xaml doit également être définie sur "Page", lorsque vous déplacez un fichier xaml entre des projets, ce paramètre est perdu (au moins dans VS 2010).
la source
Pour ceux qui n'ont pas d'erreurs en mode Debug, mais qui ont l'erreur spécifiée en mode Release (et pourtant le projet fonctionne bien), voici quelque chose de simple à essayer:
Cette méthode a fonctionné pour moi dans VS 2015, et selon d'autres utilisateurs, également 2017 et 2019
la source
J'ai rencontré cette erreur lors de la refactorisation où j'ai renommé certains fichiers / dossiers et les fichiers prexisiting * .g.cs devaient être régénérés.
la source
x:Class
correspond auNamespace.Class
.Il y a une raison très spécifique à cela, et c'est dans les paramètres du projet. Cela se produit généralement chaque fois que vous essayez d'ajouter un contrôle / fenêtre WPF à une bibliothèque ou un projet de classe .NET 2.0. La raison de cette erreur est que le projet ne sait pas qu'il construit un contrôle ou une fenêtre WPF et essaie donc de le créer en tant que projet C # 2.0.
La solution consiste à modifier le fichier .csproj. Faites un clic droit sur le projet à l'origine du problème et sélectionnez «Décharger le projet». Cliquez avec le bouton droit sur le projet déchargé et sélectionnez «Modifier .csproj». Le fichier .csproj s'ouvre et vous pouvez voir le XML. recherchez la ligne suivante:
C'est vers la fin du fichier, et la seule ligne que vous avez est probablement
Cela indique à Visual Studio de générer le projet en tant que projet .NET 2.0. Ce que nous voulons faire est de dire à Visual Studio qu'il s'agit en fait d'un projet WPF, nous devons donc ajouter la ligne suivante:
Cette ligne indique à Visual Studio de générer le projet en tant que projet WPF. Le bas de votre fichier .csproj devrait maintenant ressembler à ceci:
Enregistrez le fichier .csproj, faites un clic droit dessus dans l'Explorateur de solutions et sélectionnez «Recharger le projet» compiler et c'est tout, vous avez terminé!
la source
cela m'est arrivé quand j'ai accidentellement supprimé la référence de classe de la définition xaml:
J'ai remplacé le
première ligne avec ceci:
Je sais que ce n'est pas la réponse à la question d'origine (parce que ce projet s'appuie sur une autre machine), mais le message d'erreur était le même, alors je vais peut-être aider quelqu'un dans cette situation.
la source
Vous pouvez obtenir cette erreur lorsque vous importez une classe à partir d'un autre projet ou modifiez le chemin d'accès du fichier xaml ou l'espace de noms du fichier xaml ou derrière .cs.
Un: il peut avoir un espace de noms différent de celui que vous avez dans votre nouveau projet
Comme vous pouvez le voir, l'espace de nom dans le fichier importé commence par l'ancien nom du projet: "TrainerB" , mais votre nouveau projet peut avoir un nom différent, il vous suffit donc de le remplacer par le nouveau nom de projet correct, dans le fichier .xaml et le fichier .cs derrière.
Deux:
changez les propriétés du fichier .xaml en:
Créer une action: ressource intégrée
Outil personnalisé: MSBuild: UpdateDesignTimeXaml
la source
xaml
fichier. +1Assurez-vous que dans le fichier xaml
faire correspondre le nom «Project1» et le nom «Page1»
la source
Vérifiez le fichier Designer .
J'ai eu ce même problème. Dans mon cas, la cause était que le
namespace
for FileName.Designer.cs ne correspondait pas au (correct)namespace
utilisé dans FileName.cs .La modification
namespace
de FileName.Designer.cs pour correspondre à celle de FileName.cs a résolu le problème immédiatement.la source
J'ai eu cela (bien que ce soit ma faute et que cela ait été causé après avoir copié et collé du code); cela peut se produire lorsque l'espace de noms ne correspond pas entre le XAML et le code derrière
PAR EXEMPLE
et le code derrière est
la source
J'ai rencontré cela en renommant un utilisateur. La façon dont je l'ai corrigé était de commenter InitializeComponent, de vérifier que tous les noms étaient corrects (xaml et code derrière), de générer le projet, de décommenter InitializeComponent, puis de recréer. Il semble qu'il y ait peut-être quelques causes / solutions à ce problème, mais c'est ainsi que cela s'est passé pour moi.
la source
Aucune des réponses ci-dessus n'a fonctionné pour moi. Je les ai tous essayés sauf les doublons. Cependant, pour une raison étrange, cela a fonctionné dans mon projet multiplateforme dans Visual Studio 2015:
la source
Je suis d'accord avec la réponse ci-dessus que les espaces de noms doivent correspondre. Cependant, j'ai eu un problème comme celui-ci où les espaces de noms correspondaient.
Pour résoudre ce problème, j'ai simplement changé l'espace de noms dans le XAML en un INCORRECT, enregistré, puis changé à nouveau en celui de CORRECT. Voila!
la source
Si vous utilisez Xamarin Forms et que vous déplacez un fichier XAML, "l'action de génération" du fichier est modifiée. Xamarin Forms nécessite "build action = Embedded Resource".
Appliquer une "action de génération" dans Visual Studio:
Select the XAML file -> Properties -> Build Action = Embedded Resource
la source
J'essaie toutes les suggestions ci-dessus. Si vous essayez trop sans succès, obtenez le moyen le plus simple. Créez un nouveau page.xaml puis copiez votre code pour la nouvelle classe et supprimez la classe XAML avec des problèmes. Ne passez pas plus de temps.
la source
Déchargez la solution entière, puis rechargez-la à nouveau. Reconstruisez ensuite la solution. Cela a résolu le problème pour moi.
la source
Une autre cause courante de cette erreur est que si vous avez fait quelque chose dans ce cas:
Cliquez avec le bouton droit sur le dossier dans le projet pour créer un nouveau UserControl. Cela crée un fichier de classe et xaml qui dérive du contrôle utilisateur dans l'espace de noms du dossier.
Ensuite, vous décidez de modifier l'espace de noms de la classe car vous n'utilisez vraiment que des dossiers pour l'organisation du code. L'attribut x: Class ne sera pas automatiquement mis à jour, il recherchera donc une classe qui n'existe pas. Pourrait probablement utiliser un meilleur message d'erreur comme «x: le type de classe est introuvable dans le namesace bla.blaa.blaaa».
la source
Une autre solution à ce problème consiste à simplement changer la propriété-> Build Action sur le XAML de Embedded Resource à quoi que ce soit d'autre, à enregistrer, puis à la modifier de nouveau à Embedded Resource. L'erreur disparaît.
la source
Je sais que cela a été répondu en raison d'une cause différente, mais c'est une publication très populaire et j'avais rencontré le même problème avec une bibliothèque de classe. Dans ce cas, il s'est avéré être à la fois un changement dans mon espace de noms (répondu dans ce post ici ) et que le compilateur n'a pas pu reconstruire le Window.gics qui définit la méthode InitializeComponent (). Cela n'a pas pu car la bibliothèque de classes n'avait pas la valeur ProjectTypeGuid pour les projets WPF dans le fichier csproj. Les instructions pour cela sont ici et ici . J'ai pensé que je partagerais au cas où quelqu'un d'autre aurait rencontré le même problème. Changer simplement l'espace de noms n'est pas suffisant dans ce cas.
la source
Cela m'est arrivé car un programme de désinstallation de package Nuget a supprimé tous les attributs de l'élément <Application> dans App.xaml. Cela comprenait l'attribut x: Class, qui spécifie le nom de la classe d'application. La classe partielle contenant la méthode InitializeComponent () n'a donc jamais été générée.
J'ai résolu le problème en rétablissant App.xaml sur la copie contrôlée par la source.
la source
Cela l'a résolu pour moi.
J'avais commenté les ressources du fichier App.xaml
Commenter cela de nouveau pour corriger l'erreur de construction.
En creusant un peu plus profondément, j'ai trouvé que le fichier app.g.cs dans {Project} \ obj \ debug ne contenait les éléments suivants que lorsque j'ai laissé la ressource commentée.
la source
Pour ceux qui trouvent cela sur Internet. Vérifiez le fichier Windows.csproj si la compilation existe. Il devrait y avoir 2 entrées
la source
<DependentUpon>YourFile.xaml</DependentUpon>
pour une raison quelconque et c'est ce qui l'a corrigé pour moi!Si les espaces de noms sont corrects, il y a aussi une même erreur,
Fermez simplement votre application et ouvrez-la à nouveau .
Cela peut résoudre votre problème
la source
Après une action, l'espace de noms du fichier .cs et celui du fichier .xaml peuvent être différents (dans xaml, recherchez x: Class = "namespace.yourType").
Fixez-les pour qu'ils soient les mêmes.
la source
J'ai découvert que «l'objet de démarrage» était (non défini) à l'origine de cette erreur pour moi.
"Objet de démarrage" (non défini)
la source
root
auView
répertoire.Étant donné que cela semble être le fil conducteur pour le problème concernant «InitializeComponent» manquant, je vais inclure ma réponse ici.
Moi aussi, je rencontrais ce problème et j'ai essayé tout ce que j'ai trouvé ici et dans tous les autres forums que Google pouvait trouver, mais aucun n'a résolu le problème pour moi. Après deux heures de tout essayer, j'ai finalement compris ce qui n'allait pas avec ma configuration.
Dans notre projet, nous utilisons des composants Metro de MahApps . La vue qui me posait problème était une vue héritée de MetroWindow, comme ceci:
Maintenant, j'ai défini mes ressources statiques comme
C'est ainsi que j'ai défini les ressources dans
UserControl
s dans toutes mes autres vues, c'est donc ce que je supposais fonctionner.Ce n'était cependant pas le cas avec
Controls:MetroWindow
! Là, j'avais absolument besoin de la définition des ressources comme suit:Donc, mon problème, en résumé, était une
<ResourceDictionary>
balise manquante . Je ne sais vraiment pas pourquoi cela a produit l'erreur «InitializeComponent» et il ne l'a étrangement même pas produite sur toutes mes machines, mais c'est comme ça que je l'ai corrigée. J'espère que cela vous aidera (les 0,001% restants de personnes rencontrant ce problème).la source
Je viens de rencontrer ce problème et il s'est avéré que mon projet est stocké dans mon dossier utilisateur, qui est stocké sur le réseau, et nous avons eu une panne de réseau momentanée. J'ai fait une construction; il se plaignait que mes fichiers avaient été modifiés en dehors de l'éditeur (ils ne l'avaient pas fait; les verrous de fichiers venaient d'être bouchés), et cela s'est bien passé, supprimant l'erreur concernant la
InitializeComponent()
méthode.BTW, au cas où vous vous poseriez la question, développer quelque chose à partir d'un lecteur réseau est une mauvaise pratique. Cela devient particulièrement problématique lorsque vous essayez de tirer parti du code managé de .NET; d'après mon expérience, cela panique à chaque fois que vous construisez. J'ai oublié de mettre ce petit projet à jeter dans le bon dossier et j'ai fini par en payer le prix.
la source
Une autre explication possible est que vous construisez contre x86. Cliquez avec le bouton droit sur votre solution et choisissez Configuration Manager. Voyez si vous construisez contre x86 au lieu de N'importe quel CPU.
la source
Je me rends donc compte que c'est une question plus ancienne, mais nous avions un problème similaire. Nous avons pu créer un projet en utilisant VS2012, mais pas en utilisant msbuild à partir de la ligne de commande. Je suis allé dans le fichier .proj et j'ai remarqué qu'il n'avait pas d'enregistrement pour "ProjectTypeGuids" dans la section par défaut "PropertyGroup", alors j'ai ajouté ceci:
qui est le GUID du projet pour WPF. J'ai ensuite supprimé et rajouté UserControl et il a commencé à fonctionner. Je ne sais pas si je devais faire cette dernière étape, mais cela fonctionne pour moi maintenant.
la source
Pour une raison quelconque, après avoir copié .xaml et ses .cs entre les projets, l'action de génération change parfois. Veuillez vous assurer que l'action de génération de votre .xaml est Page.
la source