Comencé a organizar mi código hoy en archivos .cs separados, y para permitir que los métodos que funcionan con la interfaz de usuario continúen haciéndolo, crearía el código .cs bajo el mismo espacio de nombres y el mismo nombre de clase parcial pública para que los métodos pudieran ser interoperables.
Mi encabezado se ve así en cuatro archivos, incluido mi archivo principal principal que llama:
public shell()
{
InitializeComponent();
}
Área de encabezado de los archivos .cs que funcionan con la interfaz de usuario (y parecen estar causando este nuevo conflicto):
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Data.SqlServerCe;
using System.Diagnostics;
using System.Threading;
using System.Collections.Specialized;
using System.Net;
using System.Runtime.InteropServices;
using watin = WatiN.Core;
using WatiN.Core.Native.InternetExplorer;
using System.Web;
namespace WindowsFormsApplication1
{
public partial class shell : Form
{
Ahora, cuando trato de depurar / obtener una vista previa de mi aplicación (por cierto, esta es una aplicación de Windows dentro de Visual Studio 2010 Express) aparece este mensaje de error:
No contiene un método 'principal' estático adecuado para un punto de entrada
Busqué en las propiedades de la aplicación en Aplicación-> Objeto de inicio, pero no me ofrece opciones. ¿Cómo puedo informar a la aplicación que comience en el archivo .cs que tiene mi InitializeComponent (); ¿mando?
- He mirado a mi alrededor hasta ahora sin una solución.
- Las propiedades de cada archivo .cs se establecen en 'Compilar'.
- No veo un archivo App.xaml en mi Explorador de soluciones, pero veo un archivo app.config.
Todavía soy muy nuevo y este es mi primer intento de un método de organización con código c #.
fuente
main
, con la firma correcta. Así es como el compilador sabe cómo iniciar su programa.[STAThread] static void Main(string[] args) { Application.Run(new shell()); }
Respuestas:
También estaba analizando este problema y, en mi caso, la solución fue demasiado fácil. Agregué un nuevo proyecto vacío a la solución. El proyecto recién agregado se configura automáticamente como una aplicación de consola. Pero como el proyecto agregado era un proyecto "vacío", no existía Program.cs en ese nuevo proyecto. (Como se esperaba)
Todo lo que necesitaba hacer era cambiar el tipo de salida de las propiedades del proyecto a la biblioteca de clases
fuente
static void main()
) para determinar dónde comenzar a ejecutar el código; las bibliotecas de clases no lo hacen: son llamadas por otras bibliotecas que ya se están ejecutando.main
en mis otros dos proyectos que eran aplicaciones de consola como el proyecto StartUp. Cambiar esos dos proyectos de "asistencia" a la Biblioteca de clases en su pantalla Propiedades lo solucionó de inmediato.Cambie el Tipo de salida en Proyecto> Propiedades por el de una "Biblioteca de clases". De forma predeterminada, esta configuración puede haberse establecido en una "Aplicación de consola".
fuente
Intente agregar este método a una clase y vea si aún recibe el error:
[STAThread] static void Main() { }
fuente
Tuve este error y lo resolví usando esta solución.
fuente
Si no tiene un archivo con nombre
Program.cs
, simplemente agregue una nueva clase y asígnele un nombreProgram.cs
.Luego pega este código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace Sales { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
fuente
fuente
Si tiene un método Main pero sigue recibiendo este error, asegúrese de que el archivo que contiene el método Main tenga "Acción de compilación" configurada en "Compilar" y "Copiar al directorio de salida" configurado como "No copiar".
fuente
Editar archivo .csproj
<OutputType>Library</OutputType>
salud !
fuente
Library
(con mayúsculaL
)Para mí, el error fue realmente producido por "La característica 'async main' no está disponible en C # 7.0. Utilice la versión de idioma 7.1 o superior". Este problema provocaba el mensaje "No contiene un método 'principal' estático adecuado para un punto de entrada" en la Lista de errores, pero la ventana Salida mostraba el error "no disponible". Para corregir esto, cambié la versión de idioma de 'C # última versión menor (predeterminada)' a 'C # última versión menor (última)' en Configuración de compilación avanzada.
fuente
hey obtuve el mismo error y la solución a este error es simplemente escribir M mayúscula en lugar de m pequeña .. por ejemplo: - static void Main () espero que ayude ..
fuente
Tuve este problema en VS 2017 causado por:
estática asíncrona Tarea principal (cadena [] argumentos)
(La función 'async main' no está disponible en C # 7.0. Utilice la versión de idioma 7.1 o superior )
Añadiendo
<LangVersion>latest</LangVersion>
to app.csproj ayudó.
fuente
Parece un proyecto de Windows Forms que está intentando usar un formulario de inicio, pero por alguna razón las propiedades del proyecto están configuradas para que el inicio sea Principal.
Si ha habilitado el marco de la aplicación, es posible que no pueda ver que Main está activo (esta es una configuración no válida).
fuente
Salaam, tengo ambos
Visual Studio 2017
yVisual Studio 2019
Visual Studio 2019 no muestra este error, pero 2017 sí. Intente instalar Visual Studio 2019.
Visual Studio 2017
Visual Studio 2019
fuente
Cuando desee permitir que se especifiquen parámetros desde el comando, deben tener este aspecto:
[STAThread] static void Main(params string[] paramaters) {
no puede especificar más de un parámetro, de lo contrario, esto también causará el error informado anteriormente.
fuente
Para algunos otros que vienen aquí:
En mi caso, había copiado un .csproj de un proyecto de muestra que se incluía
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
sin incluir el archivo Program.cs. La solución fue eliminar EnableDefaultCompileItems o incluir Program.cs en la compilación explícitamentefuente
hola, su clase principal fue eliminada, así que agregue una nueva clase con el nombre establecido como Main.cs y elimine ese código o si hay un problema en la ventana, por lo que el mismo problema en eso
using System; using System.Collections.Generic; using System.Linq; using Foundation; using UIKit; namespace your_PKG_name.iOS { public class Application { // This is the main entry point of the application. static void Main(string[] args) { // if you want to use a different Application Delegate class from "AppDelegate" // you can specify it here. UIApplication.Main(args, null, "AppDelegate"); } } }
fuente
Si está utilizando un proyecto de biblioteca de clases, configure Biblioteca de clases como tipo de salida en las propiedades en la sección de aplicación del proyecto.
fuente
Después de colocar el código anterior en Program.cs, siga estos pasos:
Haga clic derecho en el proyecto
Seleccione "Propiedades"
Establezca "Tipo de salida" en "Aplicación de Windows"
Objeto de inicio: espacio de nombres.Programa
fuente
Si de hecho tiene un método principal estático público, podría ser su configuración de compilación como se explica en esta pregunta: Solución de problemas "El programa no contiene un método 'Principal' estático" cuando claramente lo hace ...?
fuente
Yo también me he enfrentado a este problema. Luego me di cuenta de que estaba eligiendo Aplicación de consola (Paquete) en lugar de Aplicación de consola.
fuente
Estoy usando Visual Studio y también tuve este problema. Me tomó algo de tiempo, pero en mi programa se debió a que borré accidentalmente una clase llamada "Programa" que se genera automáticamente.
fuente
Para los lectores futuros que enfrentaron el mismo problema con la aplicación Windows Forms, una solución es agregar estas líneas a su clase de formulario principal / de inicio:
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MyMainForm()); }
Luego vaya a propiedades del proyecto> Aplicación> menú desplegable de Objeto de inicio, debería ver el espacio de nombres MyMainForm, selecciónelo, limpie y cree la solución. Y debería funcionar.
fuente
Verifique si el proyecto está configurado como "Proyecto de inicio"
Haga clic derecho en el proyecto y seleccione "Establecer como proyecto de inicio" en el menú.
fuente
Si es como yo, es posible que haya comenzado con una biblioteca de clases y luego haya cambiado esto a una aplicación de consola. Si es así, cambie esto ...
namespace ClassLibrary1 { public class Class1 { } }
A esto...
namespace ConsoleApp1 { class Program { static void Main(string[] args) { } } }
fuente
Una entrada válida se ve así:
public static class ConsoleProgram { [STAThread] static void Main() { Console.WriteLine("Got here"); Console.ReadLine(); } }
Tuve problemas mientras escribía una aplicación web, pero por el terrible tiempo de carga, quería convertir rápidamente el mismo proyecto en una aplicación de consola y realizar pruebas de métodos rápidos sin cargar la solución completa.
Mi punto de entrada se colocó en /App_Code/Main.cs, y tuve que hacer lo siguiente:
Después de esto, puedo configurar la salida (como se menciona en el Paso 1) en Biblioteca de clases para iniciar el sitio web, o Aplicación de consola para ingresar al modo de consola.
¿Por qué hice esto en lugar de 2 proyectos separados?
Simplemente porque tenía referencias a Entity Framework y otras referencias específicas que crearon problemas al ejecutar 2 proyectos separados.
Para soluciones más fáciles, aún recomendaría 2 proyectos separados ya que la salida de la consola es principalmente código de prueba y probablemente no quiera arriesgarse a salir en código de producción.
fuente
Quizás no sea intencional, pero mover mi archivo de la ventana acoplable a la carpeta de la solución en lugar del proyecto eliminó el error. Esto fue útil cuando todavía quería ejecutar la solución independientemente de la ventana acoplable
fuente