Compartir a través de


La plantilla de aplicación de consola de C# genera instrucciones de nivel superior

A partir de .NET 6, la plantilla de proyecto para las nuevas aplicaciones de consola de C# genera el código siguiente en el archivo Program.cs:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Para .NET 5 y versiones anteriores, la plantilla de aplicación de consola genera el código siguiente:

using System;

namespace MyApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

En el código anterior, el espacio de nombres real depende del nombre del proyecto.

Estas dos formas representan el mismo programa. Ambos son válidos en C#. Cuando se usa la versión más reciente, solo es necesario escribir el cuerpo del método . El compilador genera una clase con un método de punto de entrada y coloca todas las instrucciones de nivel superior en ese método. El nombre del método generado no es — es un detalle de implementación al que el código no puede hacer referencia directamente. No es necesario incluir los otros elementos del programa; el compilador los genera automáticamente. Para obtener más información sobre el código que genera el compilador al usar instrucciones de nivel superior, vea instrucciones de nivel superior en la sección Aspectos básicos de la Guía de C#.

Al trabajar con tutoriales que no se actualizan para usar plantillas de .NET 6+, use una de estas dos opciones:

  • Use el nuevo estilo de programa, agregando nuevas instrucciones de nivel superior a medida que agrega características.
  • Convierta el nuevo estilo de programa al estilo anterior, con una clase y un método .

Si desea usar las plantillas antiguas, consulte Uso del estilo de programa antiguo más adelante en este artículo.

Usar el nuevo estilo de programa

Las características que simplifican el nuevo programa son instrucciones de nivel superior, directivas globales y directivas implícitas.

El término instrucciones de nivel superior significa que el compilador genera los elementos de clase y método para el programa principal. El compilador declara la clase generada y el método de punto de entrada en el espacio de nombres global. Examine el código de la nueva aplicación e imagine que contiene las instrucciones dentro del método generado por plantillas anteriores, pero en el espacio de nombres global.

Agregue más instrucciones al programa, al igual que agrega instrucciones al método en el estilo tradicional. Acceda a los argumentos de la línea de comandos, úselo y establezca el código de salida. Incluso puede agregar funciones. El compilador los crea como funciones locales anidadas dentro del método de punto de entrada generado. Las funciones locales no pueden incluir ningún modificador de acceso (por ejemplo, o ).

Tanto las instrucciones de nivel superior como las directivas implícitas simplifican el código que compone la aplicación. Para seguir un tutorial existente, agregue las nuevas instrucciones al archivo Program.cs generado por la plantilla. Imagina que las declaraciones que escribes están entre las llaves de apertura y cierre dentro del método como se indica en el tutorial.

Si prefiere el formato anterior, copie el código del segundo ejemplo de este artículo y continúe con el tutorial como antes.

Para obtener más información sobre las instrucciones de nivel superior, consulte un tutorial que explique las instrucciones de nivel superior.

Directivas implícitas

El término directivas implícitas significa que el compilador agrega automáticamente un conjunto de directivas basadas en el tipo de proyecto. En el caso de las aplicaciones de consola, las siguientes directivas se incluyen implícitamente en la aplicación:

  • using System;
  • using System.IO;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Net.Http;
  • using System.Threading;
  • using System.Threading.Tasks;

Otros tipos de aplicación incluyen más espacios de nombres que son comunes para esos tipos de aplicación.

Si necesita directivas que no se incluyen implícitamente, agréguelas al archivo .cs que contiene instrucciones de nivel superior o a otros archivos de .cs . Para las directivas que necesita en todos los archivos .cs de una aplicación, use directivas globales.

Deshabilitación de directivas implícitas

Para quitar este comportamiento y controlar manualmente todos los espacios de nombres del proyecto, agregue al archivo de proyecto en el elemento , como se muestra en el ejemplo siguiente:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

Directivas globales

Una directiva global importa un espacio de nombres para toda la aplicación en lugar de un único archivo. Agregue estas directivas globales mediante la inclusión de un elemento en el archivo de proyecto o la adición de la directiva a un archivo de código.

Para quitar una directiva implícita específica, agregue un elemento con un atributo al archivo de proyecto. Por ejemplo, si la característica de directivas implícitas está activada, al agregar el siguiente elemento se quita el espacio de nombres de aquellos que se importan implícitamente.

<ItemGroup>
  <Using Remove="System.Net.Http" />
</ItemGroup>

Usar estilo de programa antiguo

A partir de .NET SDK 6.0.300, la plantilla console tiene una opción --use-program-main. Úselo para crear un proyecto de consola que no use instrucciones de nivel superior y tenga un método .

dotnet new console --use-program-main

El resultado generado es el siguiente:

namespace MyProject;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Usar el estilo de programa antiguo en Visual Studio

  1. Al crear un nuevo proyecto, los pasos de configuración se desplazan a la página Configuración de información adicional . En esta página, seleccione la casilla No usar instrucciones de nivel superior.

    Visual Studio no use instrucciones de nivel superior

  2. Una vez creado el proyecto, el contenido es el siguiente:

    namespace MyProject;
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
    

Nota:

Visual Studio conserva el valor de opción para la próxima vez que cree un proyecto basado en la misma plantilla. Si creó por última vez un proyecto de aplicación de consola con la casilla No usar instrucciones de nivel superior activadas, esa opción se activa al crear el siguiente proyecto de aplicación de consola. El contenido del archivo Program.cs podría ser diferente para ajustarse al estilo de código definido en la configuración global del editor de texto de Visual Studio o al archivo EditorConfig.

Para obtener más información, vea Crear configuraciones de editor portátiles y personalizadas con EditorConfig y Opciones, Editor de texto, C#, Avanzado.