studio - initializecomponent no existe en el contexto actual wpf
El nombre ''InitializeComponent'' no existe en el contexto actual (30)
Si creo un nuevo proyecto en Visual Studio 2010 SP1 y selecciono "Aplicación WPF" e intento generar la aplicación generada, aparece el error
El nombre ''InitializeComponent'' no existe en el contexto actual.
Recibí un error similar esta mañana cuando intenté construir mi proyecto actual. Ayer no tuve ningún problema en compilarlo y ejecutarlo.
Creé un nuevo proyecto y recibí el error cada vez que compilaba el proyecto. Acabo de enviar el proyecto a un colega y él acaba de compilarlo sin ningún error.
¿Qué está mal?
- Navegue al directorio de soluciones
- Eliminar la carpeta / obj
- Reconstruir la solución
Encontré este error durante la refactorización, donde cambié el nombre de algunos archivos / carpetas y los archivos * .g.cs que debían volver a generarse debían volver a generarse.
Acabo de encontrar este problema, y resultó que mi proyecto está almacenado en mi carpeta de usuario, que está almacenada en la red, y tuvimos una interrupción momentánea de la red. Hice una compilación se quejó de que mis archivos se habían modificado fuera del editor (no lo habían hecho; los bloqueos de los archivos se han eliminado) y se generó correctamente, eliminando el error relacionado con el método InitializeComponent()
.
Por cierto, en caso de que te lo preguntes, desarrollar algo desde una unidad de red es una mala práctica. Se vuelve particularmente problemático cuando intenta aprovechar el código administrado de .NET; en mi experiencia, se asusta cada vez que construyes. Olvidé poner este pequeño proyecto en la carpeta adecuada y terminé pagando el precio.
Asegúrate en el archivo xaml
<Page x:Class="Project1.Page1" ...
coincide con el nombre ''Proyecto1'' y el nombre ''Página1''
Debido a algún motivo después de copiar .xaml y es .cs entre proyectos, la acción de compilación a veces cambia. Por favor, asegúrese de que la acción de compilación de su .xaml es Página.
Descargue la solución completa y luego vuelva a cargarla. Luego reconstruye la solución. Esto resolvió el problema para mí.
Descubrí que el "objeto de inicio" estaba (no establecido) causando este error para mí.
Después de alguna acción, el espacio de nombres del archivo .cs y el del archivo .xaml pueden ser diferentes (en xaml busque la x: Class = "namespace.yourType").
Arreglarlos para que sean los mismos.
Entonces me doy cuenta de que esta es una pregunta antigua, pero estábamos teniendo un problema similar. Pudimos construir un proyecto usando VS2012, pero no usando msbuild desde la línea de comandos. Entré en el archivo .proj y noté que no tenía un registro para "ProjectTypeGuids" en la sección predeterminada "Grupo de propiedades", así que agregué esto:
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
que es el GUID del proyecto para WPF. Luego borré y volví a agregar el UserControl y comenzó a funcionar. No estoy seguro si tuve que dar ese último paso, pero ahora funciona para mí.
Esto lo resolvió para mí.
Había comentado los recursos en el archivo 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>
Comentando esto de nuevo para corregir el error de compilación.
<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>
Al profundizar un poco más, encontré que el archivo app.g.cs en {Proyecto} / obj / debug solo contenía lo siguiente cuando dejé el recurso comentado.
/// <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
}
Esto me sucedió porque un desinstalador de paquetes Nuget eliminó todos los atributos en el elemento <Application> en App.xaml. Esto incluía el atributo x: Class, que especifica el nombre de la clase de la aplicación. Por lo tanto, la clase parcial que contiene el método InitializeComponent () nunca se generó.
Solucioné el problema al revertir App.xaml a la copia controlada por fuente.
Estoy de acuerdo con la respuesta anterior de que los espacios de nombres deben coincidir. Sin embargo, tuve un problema como este en el que coincidían los espacios de nombres.
Para solucionarlo, simplemente cambié el espacio de nombres en el XAML a uno INCORRECTO, lo guardé y luego lo cambié de nuevo al CORRECTO. Voila!
Haga clic derecho en la carpeta en el proyecto para crear un nuevo UserControl que fue el problema para mí. Creé el mismo control fuera de la carpeta y eso fue todo.
Hay una razón muy específica para esto, y está en la configuración del proyecto. Esto suele suceder cuando intenta agregar un control / ventana de WPF a una biblioteca o proyecto de clase .NET 2.0. El motivo de este error es que el proyecto no sabe que está construyendo un control o ventana de WPF y, por lo tanto, intenta construirlo como un proyecto C # 2.0.
La solución consiste en editar el archivo .csproj. Haga clic derecho en el proyecto que causa el problema y seleccione "Descargar proyecto". Haga clic derecho en el proyecto descargado y seleccione "Editar .csproj". El archivo .csproj se abrirá y podrá ver el XML. busca la siguiente línea:
<Import Project=…..
Está cerca del final del archivo, y la única línea que tiene es probablemente
<Import Project="$(MSBuildBinPath)/Microsoft.CSharp.targets" />
Esto le dice a Visual Studio que genere el proyecto como un proyecto .NET 2.0. Lo que queremos hacer es decirle a Visual Studio que esto es en realidad un proyecto WPF, por lo que debemos agregar la siguiente línea:
<Import Project="$(MSBuildBinPath)/Microsoft.WinFX.targets" />
Esta línea le indicará a Visual Studio que genere el proyecto como un proyecto WPF. Ahora la parte inferior de tu archivo .csproj debería verse así:
<Import Project="$(MSBuildBinPath)/Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)/Microsoft.WinFX.targets" />
Guarde el archivo .csproj, haga clic con el botón derecho en el Explorador de soluciones y seleccione la compilación "Recargar proyecto" y listo. ¡Ya está todo listo!
He tenido esto (aunque fue mi culpa y fue causado después de que copié y pegué algo de código); puede ocurrir cuando el espacio de nombres no coincide entre el XAML y el código detrás
P.EJ
<UserControl x:Class="DockPanel.TreeView" />
y el código detrás es
namespace NotDockPanel
Intento todas las sugerencias anteriores. Si lo intentas también sin éxito conseguirás el camino más fácil. Cree un nuevo page.xaml, luego copie su código para la nueva clase y elimine la clase XAML con problemas. No pases más tiempo.
La acción de compilación para el archivo .xaml también debe configurarse en "Página", cuando se mueve un archivo xaml entre proyectos, esta configuración se pierde (al menos en VS 2010).
Me encontré con esto al cambiar el nombre de un control de usuario. La forma en que lo arreglé fue comentar InitializeComponent, verificar que todos los nombres eran correctos (xaml y código detrás), compilar el proyecto, descomentar InitializeComponent y luego compilar nuevamente. Parece que puede haber un par de causas / soluciones para este problema, pero de esta manera lo hice por mí.
Me he encontrado con esto un par de veces y sigo olvidando las causas. Me encontré con esto cuando renombré el espacio de nombres en mi código detrás del archivo pero no en mi XAML.
Así que comprueba si has hecho lo mismo.
El espacio de nombres y los nombres de clase deben coincidir, ya que ambos forman parte de una clase parcial
namespace ZZZ
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
{
//...
}
}
<!-- XAML -->
<Window x:Class="ZZZ.MainWindow">
Ninguna de las respuestas anteriores funcionó para mí. Los probé todos excepto los duplicados. Sin embargo, por alguna extraña razón, esto funcionó en mi proyecto multiplataforma en Visual Studio 2015:
- Haga clic derecho en el proyecto que está causando el problema en el Explorador de soluciones. En el menú emergente, elija: Agregar -> Clase
- Seleccione multiplataforma -> Forms Xaml Page. Mantenga el bonito nombre estándar de Page1.cs y haga clic en Agregar.
- Observe cómo el problema InitializeComponent () anterior simplemente desapareció por alguna razón.
- Elimine el Page1.cs creado recientemente y continúe la programación como si Visual Studio funcionara bien.
Otra causa común de este error es si hiciste algo en esto:
Haga clic derecho en la carpeta en el proyecto para crear un nuevo UserControl. Esto crea una clase y un archivo xaml que se deriva del control del usuario en el espacio de nombres de la carpeta.
Entonces decides cambiar el espacio de nombres de la clase porque realmente solo estás utilizando carpetas para la organización del código. El atributo x: Class no se actualizará automáticamente, por lo que buscará una clase que no exista. Probablemente podría usar un mejor mensaje de error como "x: No se pudo encontrar el tipo de clase en namesace bla.blaa.blaaa".
Otra posible explicación es que estás construyendo contra x86. Haga clic derecho en su Solución y elija Configuration Manager. Mira si estás compilando contra x86 en lugar de cualquier CPU.
Otra solución a este problema es simplemente cambiar la propiedad-> Crear acción en el XAML desde el recurso incorporado a cualquier otra cosa, guardar, y luego cambiarlo de nuevo a recurso integrado. El error desaparece.
Para aquellos que (en VS2015) no tienen errores en el modo de depuración, pero sí tienen el error especificado en el modo de lanzamiento (y, sin embargo, el proyecto funciona bien), esto es algo sencillo de intentar:
- Abra el archivo XAML correspondiente al archivo xaml.cs ofensivo.
- Haga una edición - cualquier edición, como agregar un espacio en algún lugar
- Guarda el archivo y ciérralo
Este método funcionó para mi.
Para quienes lo encuentran en internet. Compruebe el archivo Windows.csproj si la compilación está allí. Debe haber 2 entradas
<Page Include="YourFile.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="YourFile.xaml.cs">
<DependentUpon>YourFile.xaml</DependentUpon>
</Compile>
Puede obtener este error cuando importe una clase de otro proyecto, o cambie la ruta del archivo xaml, o el espacio de nombres del archivo xaml o detrás de .cs.
Uno: puede tener un espacio de nombres que no sea el mismo que el que tiene en su nuevo proyecto
namespace TrainerB.MVC.Forms
{
public partial class AboutDeveloper : ContentPage
{
public AboutDeveloper()
{
InitializeComponent();
}
}
}
Como puede ver, el espacio de nombres en el archivo importado comienza con el nombre antiguo del proyecto: "TrainerB" , pero su nuevo proyecto puede tener un nombre diferente, así que simplemente cámbielo al nombre correcto del nuevo proyecto, tanto en el archivo .xaml como el archivo .cs detrás.
Dos:
cambia las propiedades del archivo .xaml a:
Acción de construcción: Recurso incrustado
Herramienta personalizada: MSBuild: UpdateDesignTimeXaml
Si está utilizando Xamarin Forms y mueve un archivo XAML, se modifica la "acción de compilación" del archivo. Xamarin Forms requiere "build action = Embedded Resource".
Aplicar "acción de construcción" en Visual Studio:
Select the XAML file -> Properties -> Build Action = Embedded Resource
Si los espacios de nombres son correctos, entonces también hay un mismo error,
Solo cierra tu aplicación y ábrela de nuevo .
Esto puede resolver su problema
Tuve el mismo problema, espero que haya copiado mi MainWindow xaml y cs en un nuevo archivo y luego los haya copiado en su lugar original. Entonces recibí este error después de intentar compilar la aplicación WPF.
Lo que hice para corregir este error fue cambiar el nombre del espacio de nombres (de egNamespace -> egNamespaceNew, y funcionó nuevamente. Luego, cambié el espacio de nombres al original.
Ya que este parece ser el hilo conductor del problema relacionado con la falta de "InitializeComponent", incluiré mi respuesta aquí.
Yo también tenía este problema y probé todo lo que encontré aquí y en todos los otros foros que Google pudo encontrar, sin embargo, ninguno resolvió el problema por mí. Después de dos horas de intentar todo, finalmente me di cuenta de lo que estaba mal con mi configuración.
En nuestro proyecto, estamos utilizando componentes de Metro de MahApps . La vista que me estaba dando problemas era una vista heredada de MetroWindow, como esta:
<Controls:MetroWindow x:Class="ProjectNamespace.MyView"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
... >
Ahora, he definido mis recursos estáticos como
<Controls:MetroWindow.Resources>
<prop:Resources x:Key="LocalizedStrings"/>
...
</Controls:MetroWindow.Resources>
Así es como he definido los Recursos en UserControl
s en todas mis otras vistas, así que asumí que funcionará.
Sin embargo, ese no fue el caso de Controls:MetroWindow
! Allí necesité absolutamente la definición de recurso de la siguiente manera:
<Controls:MetroWindow.Resources>
<ResourceDictionary>
<prop:Resources x:Key="LocalizedStrings"/>
...
</ResourceDictionary>
</Controls:MetroWindow.Resources>
Así que mi problema, en resumen, era una etiqueta <ResourceDictionary>
faltante. Realmente no sé por qué esto produjo el error ''InitializeComponent'' y extrañamente ni siquiera lo produjo en cada una de mis máquinas, pero así es como lo arreglé. Espero que esto ayude (el 0.001% restante de las personas que tienen este problema).
esto sucedió conmigo cuando eliminé accidentalmente la referencia de clase de la definición de xaml:
He reemplazado el
<Window x:Class="myapp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
primera linea con esto:
<RibbonWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Sé que esta no es la respuesta a la pregunta original (porque ese proyecto se basa en otra máquina), pero el mensaje de error era el mismo, así que tal vez ayude a alguien con esta situación.