Le nom "InitializeComponent" n'existe pas dans le contexte actuel

si je crée un nouveau projet dans Visual Studio 2010 SP1 et que je sélectionne "WPF Application" et que je tente de construire 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, quand j'ai essayé de construire mon projet en cours. Hier, je n'ai eu aucun problème pour le compiler et le lancer.

j'ai créé un nouveau projet et obtenu l'erreur à chaque fois que j'ai compilé le projet. Je viens d'envoyer le projet à un collègue, qui vient de le compiler sans aucune erreur.

Qu'est-ce qui ne va pas?

305
demandé sur Shimmy 2011-08-03 15:15:26

30 réponses

j'ai rencontré ceci quelques fois et je continue à oublier ce qui en est la cause. Je suis tombé sur cela quand j'ai renommé l'espace de noms sur mon code derrière le fichier mais pas dans mon XAML.

vérifiez si vous avez fait la même chose.

Le espace de noms et classe noms doivent correspondre puisqu'ils sont tous deux partie d'une classe partielle

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

<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
602
répondu Sean B 2017-11-16 14:25:07

de L'Action de Construire pour la .le fichier xaml doit aussi être défini à "Page", lors du déplacement d'un fichier xaml entre les projets ce paramètre se perd (dans VS 2010 au moins).

194
répondu Segfault 2011-11-17 16:16:18

pour ceux qui (dans VS2015) n'ont pas d'erreurs en mode de débogage, mais do ont l'erreur spécifiée en mode de publication( et pourtant le projet fonctionne bien), voici quelque chose de simple à essayer:

  1. ouvrir le fichier XAML correspondant au XAML incriminé.cs fichier.
  2. Faire un edit--tout modifier, comme par exemple, ajouter un espace quelque part
  3. Enregistrer le fichier et le fermer

cette méthode a travaillé pour moi.

53
répondu BCA 2015-10-14 16:14:19

cela m'est arrivé quand j'ai accidentellement supprimé la référence de classe de la définition xaml:

j'ai remplacé le

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

première ligne avec ceci:

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

je sais que ce n'est pas la réponse à la question initiale (parce que ce projet s'appuie sur une autre machine), mais le message d'erreur était le même, donc peut-être que je vais aider quelqu'un avec cette situation.

20
répondu p3d3str1an 2014-03-16 14:16:46
  1. Accédez à la solution répertoire
  2. supprimer le dossier \obj
  3. reconstruire la solution

j'ai rencontré cette erreur lors du remaniement où j'ai renommé certains fichiers/dossiers et le prexisiting *.G. les fichiers cs devaient être générés de nouveau.

19
répondu JordanBean 2013-04-05 20:02:35

il y a une raison très spécifique à cela, et c'est dans le cadre du projet. Cela se produit généralement lorsque 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 tente donc de le construire comme un projet C# 2.0.

la solution consiste à éditer le .fichier csproj. Clic droit sur le projet à l'origine du problème et sélectionnez "Ejecter Projet". Cliquez avec le bouton droit de la souris sur le projet non chargé et sélectionnez "Modifier .csproj". Le. le fichier csproj s'ouvrira et vous pourrez voir le XML. cherchez la ligne suivante:

<Import Project=…..

C'est près de la fin du fichier, et la seule ligne que vous avez est probablement

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

cela indique à Visual Studio de construire le projet comme un projet .net 2.0. Ce que nous voulons faire, C'est dire à Visual Studio qu'il s'agit en fait d'un projet du FPF, donc nous devons ajouter la ligne suivante::

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

Cette ligne va indiquer à Visual Studio pour créer le projet comme un projet WPF. Maintenant, votre .le bas du fichier csproj doit ressembler à ceci:

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

Enregistrer la .fichier csproj, cliquez avec le bouton droit de la souris dans Solution Explorer et sélectionnez" Reload Project " compiler et c'est tout, vous avez terminé!

17
répondu Shailender Singh 2015-01-26 18:55:46

assurez-vous que dans le fichier xaml

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

correspondent au nom "Project1" et au nom "Page1

15
répondu Song 2013-10-08 01:13:17

j'ai rencontré ceci en renommant un usercontrol. La façon dont je l'ai corrigé était de commenter InitializeComponent, vérifier que tous les noms étaient corrects (xaml et le code derrière), construire le projet, uncement InitializeComponent, puis construire à nouveau. Il semble qu'il puisse y avoir quelques causes/solutions pour cette question, mais de cette façon fait pour moi.

12
répondu Morgan Herlocker 2012-02-15 15:57:20

vous pourriez obtenir cette erreur lorsque vous importez une classe à partir d'un autre projet, ou que vous changez le chemin du fichier xaml, ou l'espace de noms de xaml ou de behind .cs fichier.

: qu'Il pourrait avoir un espace de noms n'est pas la même chose que ce que vous avez en vous un nouveau projet

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

comme vous pouvez le voir l'espace de nom dans le fichier importé commence par l'ancien nom du projet: "TrainerB " , mais votre nouveau le projet peut avoir un nom différent, donc, de passer à la correcte du nouveau nom du projet, dans les deux .fichier xaml et le derrière .cs fichier.

deux:

modifier les propriétés de la .fichier xaml:

Construire L'Action: Ressource Incorporée

Outil Personnalisé: MSBuild: UpdateDesignTimeXaml

Xaml file properties

Xaml Namespace Correcting 01

Xaml Namespace Correcting 02

12
répondu Reader Man San 2016-05-15 22:07:16

j'ai eu cela (bien que ce soit de ma faute et qu'il ait été laissé après que j'ai copié et collé du code); il peut se produire lorsque l'espace de nom ne correspond pas entre le XAML et le code derrière

EG

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

et le code derrière est

namespace NotThePanelItShouldBe
7
répondu Dave 2013-08-29 11:29:38

aucune des réponses ci-dessus n'a fonctionné pour moi. J'ai tout essayé sauf le double. Cependant, pour une raison étrange, cela a fonctionné dans mon projet multiplateforme dans Visual Studio 2015:

  1. faites un clic droit sur le projet à l'origine du problème dans L'Explorateur de solutions. Dans le menu pop-up choisir: Ajouter -- > Classe
  2. sélectionner multiplate-forme --> formulaires Page Xaml. Gardez la jolie page 1.cs nom de la norme et cliquez sur Ajouter.
  3. remarquez comment le précédent problème InitializeComponent () vient de disparaître pour une raison ou une autre.
  4. supprimer la page nouvellement créée 1.cs et continuer la programmation comme si Visual Studio fonctionnait très bien.
7
répondu Anders 2016-09-14 21:55:33

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 corriger, j'ai simplement changé l'espace de nom dans le XAML en un faux, sauvé, puis je l'ai changé de nouveau pour le bon. Voila!

6
répondu heights1976 2016-04-15 17:06:19

déchargez la solution entière et rechargez-la à nouveau. Puis reconstruire la solution. Cette résolu le problème pour moi.

6
répondu Eldhose 2017-06-15 09:53:09

une autre cause commune de cette erreur est si vous avez fait quelque chose dans ce:

  1. clic droit sur le dossier du projet pour créer un nouveau UserControl. Cela crée un fichier de classe et xaml qui dérive du contrôle de l'utilisateur dans l'espace de noms du dossier.

  2. alors vous décidez de changer l'espace de nom de la classe parce que vous êtes vraiment juste en utilisant des dossiers pour l'organisation du code. L'attribut x: Class ne sera pas obtenir automatiquement mis à jour de sorte qu'il sera à la recherche pour une classe qui n'existe pas. Pourrait probablement utiliser un meilleur message d'erreur comme " x: Class type ne pouvait pas être trouvé dans l'espace de nom bla.l'alpage blaa.blaaa."

5
répondu user1834059 2013-08-09 13:56:17

j'essaie toutes les suggestions ci-dessus. Si vous essayez trop sans succès obtenir le moyen plus facile. créez une nouvelle page.XAML puis copiez votre code pour la nouvelle classe et supprimer classe XAML avec des problèmes. Ne pas passer plus de temps.

5
répondu Diego Venâncio 2017-06-08 14:33:00

si vous utilisez des formulaires Xamarin et que vous déplacez un fichier XAML, l '"action de compilation" du fichier est modifiée. Les formulaires Xamarin nécessitent "build action = Embedded Resource".

Appliquer "action de génération" dans Visual Studio:

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

5
répondu Tonatio 2017-08-02 08:49:42

cela m'est arrivé parce qu'un désinstallateur de paquet Nuget a supprimé tous les attributs de l'élément Dans App.XAML. Cela inclut l'attribut x: Class, qui spécifie le nom de la classe de l'application. Ainsi, la classe partielle contenant la méthode InitializeComponent () n'a jamais été générée.

j'ai corrigé le problème en inversant App.xaml à la copie contrôlée par la source.

3
répondu Richard Beier 2012-02-04 03:24:35

ça m'a résolu le problème.

, j'avais commenté les ressources de l'Application.fichier 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>

commente la correction de l'erreur de construction.

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

en creusant un peu plus, j'ai trouvé que l'application.G. le fichier cs dans {Project}\obj\debug ne contenait ce qui suit que lorsque j'ai quitté la ressource commentée dans.

/// <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
}
3
répondu bic 2012-06-19 15:58:55

une autre solution à ce problème est de simplement changer la propriété-> construire L'Action sur le XAML à partir de la ressource embarquée à n'importe quoi d'autre, enregistrer, puis la modifier à nouveau à la ressource embarquée. L'erreur disparaît.

3
répondu Mark McCorkle 2016-08-09 18:49:59

si les espaces de noms sont CORRECTS, alors il y a une même erreur,

fermez simplement votre application et ouvrez-la à nouveau .

Cela peut résoudre votre problème

2
répondu Syed Siraj Wajeed 2015-09-17 08:37:05

après quelque action l'espace de noms de la .le fichier cs et celui qui est dedans .le fichier xaml peut être différent (dans xaml, cherchez l'espace de noms x:Class=".yourType").

fixez - les pour qu'ils soient identiques.

2
répondu sam 2015-12-14 10:23:36

j'ai découvert que l '"objet de démarrage" était (non défini) causant cette erreur pour moi.

"objet de démarrage" (Non défini)

2
répondu Rock 2016-03-18 17:31:49

comme ceci semble être le fil conducteur pour le problème concernant le manque de 'InitializeComponent', je vais inclure ma réponse ici.

moi aussi j'avais ce problème et j'ai essayé tout ce que j'ai trouvé ici et dans tous les autres Forums que Google pourrait trouver, cependant aucun n'a résolu le problème pour moi. Après deux heures à tout essayer, j'ai finalement compris ce qui n'allait pas avec ma configuration .

dans notre projet, nous utilisons Métro composants de MahApps . La vue qui me causait des problèmes était une vue héritant de MetroWindow, comme ceci:

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

Maintenant, j'ai défini mes ressources statiques

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

C'est comme ça que j'ai défini les ressources dans UserControl dans tous mes autres points de vue, donc c'est ce que j'ai supposé que ça va marcher.

ce n'était cependant pas le cas avec Controls:MetroWindow ! Là, j'ai absolument besoin de l' la définition de la ressource est la suivante:

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

donc mon problème, en résumé, était une étiquette manquante <ResourceDictionary> . Je ne sais vraiment pas pourquoi cela a produit l'erreur 'InitializeComponent' et il est bizarre qu'il ne l'ait même pas produit sur toutes mes machines, mais c'est comme ça que je l'ai corrigé. Espérons que cela aide (les 0,001% restants des personnes rencontrant ce problème).

2
répondu Tom Ladek 2016-11-29 14:59:24

j'ai eu le même problème, j'espère que j'ai copié mon MainWindow xaml et cs dans un nouveau fichier et puis je les ai copiés à leur place d'origine. J'ai alors eu cette erreur après avoir essayé de compiler l'application WPF.

ce que j'ai fait pour corriger cette erreur a été de renommer l'espace de noms (de egNamespace -> egNamespaceNew, et cela a fonctionné à nouveau. J'ai ensuite changé l'espace de noms à celui d'origine.

1
répondu user3113237 2013-12-23 03:11:30

clic droit sur le dossier dans le projet pour créer un nouveau UserControl qui était le problème pour moi. J'ai créé le même contrôle à l'extérieur du dossier et c'est tout.

1
répondu Luk 2015-03-01 17:43:40

j'ai juste rencontré 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 un moment de panne de réseau. J'ai fait une compilation; il s'est plaint que mes fichiers avaient été modifiés à l'extérieur de l'éditeur (ils ne l'avaient pas fait; les serrures des fichiers viennent d'être bornées), et il s'est bien construit, supprimant l'erreur concernant la méthode InitializeComponent() .

BTW, au cas où vous vous demandez, développer quelque chose à partir d'un lecteur réseau est mauvais pratique. Cela devient particulièrement problématique lorsque vous essayez de tirer parti du code géré de .NET; d'après mon expérience, il panique à chaque fois que vous construisez. J'ai oublié de mettre ce petit contre-projet dans le bon dossier, et a fini par payer le prix.

1
répondu J.D. Ray 2015-06-18 22:59:56

pour ceux qui trouvent cela sur internet. Vérifiez le Windows.csproj fichier si la compilation est là. Il devrait y avoir 2 entrées

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

<Compile Include="YourFile.xaml.cs">
  <DependentUpon>YourFile.xaml</DependentUpon>
</Compile>
1
répondu adam0404 2015-08-04 08:12:41

une autre explication possible est que vous construisez contre x86. Cliquez avec le bouton droit de la souris sur votre Solution et choisissez Gestionnaire de Configuration. Voyez si vous construisez contre x86 au lieu de N'importe quel CPU.

1
répondu Peter 2015-10-01 12:58:06

donc je me rends compte que c'est une question plus ancienne, mais nous avions un problème similaire. Nous avons pu construire un projet en utilisant VS2012, mais pas msbuild à partir de la ligne de commande. Je suis allé dans le .proj file et remarqué qu'il n'avait pas d'enregistrement pour "ProjectTypeGuids" sous la section par défaut "PropertyGroup", donc j'ai ajouté ceci:

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

qui est le guide de projet pour WPF. J'ai ensuite supprimé et rajouté le UserControl et il a commencé à fonctionner. Je ne suis pas sûr si je devais fais ce dernier pas, mais ça marche pour moi maintenant.

1
répondu Jon Nos 2015-10-29 21:55:45

à cause d'une raison quelconque après la copie .xaml et il est .cs entre les projets l'action build change parfois. Assurez-construire l'action de votre .xaml est Page.

1
répondu Marek Malczewski 2016-01-05 20:49:43