wpf xamarin forms - El nombre 'InitializeComponent' no existe en el contexto actual





15 Answers

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

cs0103 c# error

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?




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.




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!




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




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



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!




Descargue la solución completa y luego vuelva a cargarla. Luego reconstruye la solución. Esto resolvió el problema para mí.




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




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
}



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.




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.




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.




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.






Related