Soy un principiante cuando se trata de programación, pero estaba seguro de que una de las reglas universales era que un programa comienza con Main (). No veo uno cuando creo un proyecto WPF. ¿Main () simplemente nombra algo diferente en WPF?
128
Respuestas:
Se genera durante la compilación, pero puede proporcionar el suyo (desambigándolo en las propiedades del proyecto según sea necesario). Busque en obj / debug un archivo de aplicación; Tengo (cortesía de "C # 2010 Express")
App.g.i.cs
con:fuente
App.g.cs
. Pero intenté agregarMain()
y cada vez que reconstruía mi proyecto, volvería a lo que tienes aquí. Intenté crear el mío en otra clase, pero Project Properties solo encuentra MyProject.App, no la otra clase, por lo que no puedo redirigirlo.App.xaml.cs
en estudio visual. Use la barra de navegación> Lista desplegable Método> seleccionarMain
(atenuado). Esto le llevará aApp.g.i.cs
.El método Main () se crea automáticamente. Si desea proporcionar el suyo propio, debe hacerlo (probado en VS2013 y VS2017):
Luego simplemente agregue un método Main () a App.xaml.cs. Podría ser así:
fuente
Main()
es proporcionado automáticamente por el CLR y el WPF.El compilador de C # toma un modificador de línea de comandos
/m
que especifica el tipo que contiene la implementación deMain()
. Por convención, si no se especifica explícitamente ningún objeto de inicio, el CLR buscará cualquier clase que tenga unMain()
método estático y lo llamará. (Como señaló @Marc Gravel en su comentario)En el caso de WPF,
Main()
se genera automáticamente cuandoApp.xaml
se construye y se especifica el modificador / m para que el compilador de C # use esa clase como punto de entrada. Sin embargo, si observa las propiedades del proyecto, encontrará que hay una configuración para que elija el objeto de inicio. Entonces, si lo desea, puede proporcionar su propia clase que implementeMain()
.Tenga en cuenta que esto le asignará la responsabilidad de crear la
Application
instancia y llamar a suRun()
método para garantizar que la infraestructura de WPF se inicie correctamente.fuente
/m
ella no le importa cómo se llama el tipo; Si no es explícito, solo intenta encontrar algúnMain
método adecuado y se queja si encuentra 0 o más de uno. Como ejemplo, la muestra "Hello World" en la especificación del lenguaje (§1.1) se usaHello
como el nombre del tipo.main()
es proporcionado por el CLR (el tiempo de ejecución), es realmente el compilador que lo genera.MyApp.App app = new MyApp.App();
) y llamarla.Run()
, como loMain()
hubiera hecho anteriormente . Buena llamada. Además, tendría que agregarapp.InitializeComponent();
antesapp.Run()
, y afortunadamente para nosotros, elInitializeComponent()
método original todavía está allí (visto en App.g.cs, ¡así que no es necesario volver a agregarlo!).Main()
se genera durante la compilación. Puede encontrarlo enApp.g.cs
(en laobj/{Debug,Release}
carpeta).fuente
main()
es un punto de entrada estándar para una aplicación, pero todas las aplicaciones están estructuradas de esa manera. En un proyecto XAML, el archivo App.XAML especifica el punto de entrada donde diceStartupUri="MainWindow.xaml"
.Como lo afirman otros, la función principal real se genera en función del contenido de los archivos XAML en el proyecto.
fuente
Copié archivos que no se cargarían en otro proyecto que estaba sin una ventana principal en uno nuevo y obtuve este error.
Para mí fue necesario hacer el enfoque opuesto a Andreas Kahler para solucionarlo:
Después de crear un archivo de ventana y configurar la uri de inicio para este archivo, cambié la página a ApplicationDefinition de la propiedad App.xaml 'Build Action'.
fuente
En caso de que haya eliminado App.xaml y MinWindow.xaml predeterminados, es mejor editar .csproj Después de agregar App.xaml manualmente, su .csproj será:
Cambia esto a:
fuente