Tutorial: Creación de una biblioteca de clases de .NET con Visual Studio

En este tutorial, creará una sencilla clases de utilidades que contiene un único método de control de cadenas.

Una biblioteca de clases define los tipos y los métodos que se llaman desde una aplicación. Si la biblioteca tiene como destino .NET Standard 2.0, se puede llamar mediante cualquier implementación de .NET (incluido .NET Framework) que admita .NET Standard 2.0. Si la biblioteca tiene como destino .NET 8, la puede llamar cualquier aplicación que tenga como destino .NET 8. En este tutorial se muestra cómo seleccionar .NET 8 como destino.

Al crear una biblioteca de clases, puede distribuirla como un paquete NuGet o un componente empaquetado con la aplicación en la que se usa.

Requisitos previos

Crear una solución

Empiece por crear una solución en blanco para colocar el proyecto de biblioteca de clases en ella. Una solución de Visual Studio sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.

Para crear la solución en blanco:

  1. Inicie Visual Studio.

  2. En la ventana de inicio, elija Crear un proyecto nuevo.

  3. En el cuadro de búsqueda de la página Crear un nuevo proyecto, escriba solución. Elija la plantilla Solución en blanco y luego seleccione Siguiente.

    Blank solution template in Visual Studio

  4. En la página Configure el nuevo proyecto, escriba ClassLibraryProjects en el cuadro Nombre de la solución. Luego, elija Crear.

Crear un proyecto de biblioteca de clases

  1. Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba biblioteca. En la lista de lenguajes, elija C# o Visual Basic y, luego, en la lista de plataformas, elija Todas las plataformas. Elija la plantilla Biblioteca de clases y luego Siguiente.

    3. En la página Configurar el nuevo proyecto, escriba StringLibrary en el cuadro Nombre del proyecto y, después, seleccione Siguiente.

    4. En la página Información adicional, seleccione .NET 8 (versión preliminar) y después Crear.

  2. Asegúrese de que la biblioteca tiene como destino la versión correcta de .NET. Haga clic con el botón derecho en el proyecto de biblioteca en el Explorador de soluciones y, luego, seleccione Propiedades. En el cuadro de texto Marco de trabajo de destino se muestra que el proyecto tiene como destino .NET 7.0.

  3. Si usa Visual Basic, borre el texto del cuadro de texto Espacio de nombres raíz.

    Project properties for the class library

    En cada proyecto, Visual Basic crea automáticamente un espacio de nombres que corresponde al nombre del proyecto. En este tutorial, definirá un espacio de nombres de nivel superior mediante la palabra clave namespace en el archivo de código.

  4. Reemplace el código de la ventana de código para Class1.cs o Class1.vb por el código siguiente y guarde el archivo. Si no se muestra el idioma que quiere usar, cambie el selector de idioma en la parte superior de la página.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    
    Imports System.Runtime.CompilerServices
    
    Namespace UtilityLibraries
        Public Module StringLibrary
            <Extension>
            Public Function StartsWithUpper(str As String) As Boolean
                If String.IsNullOrWhiteSpace(str) Then
                    Return False
                End If
    
                Dim ch As Char = str(0)
                Return Char.IsUpper(ch)
            End Function
        End Module
    End Namespace
    

    La biblioteca de clases, UtilityLibraries.StringLibrary, contiene un método denominado StartsWithUpper. Este método devuelve un valor Boolean que indica si la instancia de cadena actual comienza con un carácter en mayúscula. El estándar Unicode distingue caracteres en mayúsculas de caracteres en minúsculas. El método Char.IsUpper(Char) devuelve true si un carácter está en mayúsculas.

    StartsWithUpper se implementa como un método de extensión, de modo que se pueda llamar como si fuera un miembro de la clase String. El signo de interrogación (?) después de string en el código de C# indica que la cadena puede ser NULL.

  5. En la barra de menú, seleccione Compilar>Compilar solución, o bien presione Ctrl+Mayús+B, para comprobar que el proyecto se compila sin errores.

Incorporación de una aplicación de consola a la solución

Agregue una aplicación de consola que use la biblioteca de clases. La aplicación solicitará al usuario que escriba una cadena y notificará si la cadena comienza con un carácter en mayúsculas.

  1. Agregue una nueva aplicación de consola de .NET denominada "ShowCase" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba consola. Elija C# o Visual Basic en la lista de lenguajes y luego, Todas las plataformas en la lista de plataformas.

    3. Elija la plantilla Aplicación de consola y, después, seleccione Siguiente.

    4. En la página Configure el nuevo proyecto, escriba ShowCase en el cuadro Nombre del proyecto. Después, haga clic en Siguiente.

    5. En la página Información adicional, seleccione .NET 8 (versión preliminar) en el cuadro Marco de trabajo. Luego, elija Crear.

  2. En la ventana de código del archivo Program.cs o Program.vb, reemplace todo el código con el siguiente código.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    
    Imports UtilityLibraries
    
    Module Program
        Dim row As Integer = 0
    
        Sub Main()
            Do
                If row = 0 OrElse row >= 25 Then ResetConsole()
    
                Dim input As String = Console.ReadLine()
                If String.IsNullOrEmpty(input) Then Return
    
                Console.WriteLine($"Input: {input} {"Begins with uppercase? ",30}: " +
                                  $"{If(input.StartsWithUpper(), "Yes", "No")} {Environment.NewLine}")
                row += 3
            Loop While True
        End Sub
    
        Private Sub ResetConsole()
            If row > 0 Then
                Console.WriteLine("Press any key to continue...")
                Console.ReadKey()
            End If   
            Console.Clear()
            Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}")
            row = 3  
        End Sub
    End Module
    

    El código usa la variable row para mantener un recuento del número de filas de datos escritas en la ventana de consola. Siempre que sea mayor o igual a 25, el código borra la ventana de consola y muestra un mensaje al usuario.

    El programa le pide al usuario que escriba una cadena. Indica si la cadena comienza con un carácter en mayúsculas. Si el usuario presiona la tecla Entrar sin especificar una cadena, la aplicación finaliza y la ventana de la consola se cierra.

Agregar una referencia de proyecto

En un principio, el nuevo proyecto de aplicación de consola no tiene acceso a la biblioteca de clases. Para que pueda llamar a los métodos de la biblioteca de clases, cree una referencia de proyecto al proyecto de biblioteca de clases.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Dependencias del proyecto ShowCase y seleccione Agregar referencia de proyecto.

    Add reference context menu in Visual Studio

  2. En el cuadro de diálogo Administrador de referencias, seleccione el proyecto StringLibrary y después Aceptar.

    Reference Manager dialog with StringLibrary selected

Ejecutar la aplicación

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto Presentación y seleccione Establecer como proyecto de inicio en el menú contextual.

    Visual Studio project context menu to set startup project

  2. Presione CTRL+F5 para compilar y ejecutar el programa sin depuración.

  3. Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.

    Console window with ShowCase running

Recursos adicionales

Pasos siguientes

En este tutorial, ha creado una prueba unitaria de una biblioteca de clases. En el siguiente tutorial, aprenderá a hacer una prueba unitaria de la biblioteca de clases.

También puede omitir las pruebas unitarias automatizadas y aprender a compartir la biblioteca mediante la creación de un paquete NuGet:

También puede obtener más información sobre cómo publicar una aplicación de consola. Si publica la aplicación de consola a partir de la solución que ha creado en este tutorial, la biblioteca de clases lo incluirá como un archivo .dll.

En este tutorial, creará una sencilla clases de utilidades que contiene un único método de control de cadenas.

Una biblioteca de clases define los tipos y los métodos que se llaman desde una aplicación. Si la biblioteca tiene como destino .NET Standard 2.0, se puede llamar mediante cualquier implementación de .NET (incluido .NET Framework) que admita .NET Standard 2.0. Si la biblioteca tiene como destino .NET 7, la puede llamar cualquier aplicación que tenga como destino .NET 7. En este tutorial se muestra cómo seleccionar .NET 7 como destino.

Al crear una biblioteca de clases, puede distribuirla como un paquete NuGet o un componente empaquetado con la aplicación en la que se usa.

Prerrequisitos

Crear una solución

Empiece por crear una solución en blanco para colocar el proyecto de biblioteca de clases en ella. Una solución de Visual Studio sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.

Para crear la solución en blanco:

  1. Inicie Visual Studio.

  2. En la ventana de inicio, elija Crear un proyecto nuevo.

  3. En el cuadro de búsqueda de la página Crear un nuevo proyecto, escriba solución. Elija la plantilla Solución en blanco y luego seleccione Siguiente.

    Blank solution template in Visual Studio

  4. En la página Configure el nuevo proyecto, escriba ClassLibraryProjects en el cuadro Nombre de la solución. Luego, elija Crear.

Crear un proyecto de biblioteca de clases

  1. Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba biblioteca. En la lista de lenguajes, elija C# o Visual Basic y, luego, en la lista de plataformas, elija Todas las plataformas. Elija la plantilla Biblioteca de clases y luego Siguiente.

    3. En la página Configurar el nuevo proyecto, escriba StringLibrary en el cuadro Nombre del proyecto y, después, seleccione Siguiente.

    4. En la página Información adicional, seleccione .NET 7 (soporte técnico de duración estándar) y elija Crear.

  2. Asegúrese de que la biblioteca tiene como destino la versión correcta de .NET. Haga clic con el botón derecho en el proyecto de biblioteca en el Explorador de soluciones y, luego, seleccione Propiedades. En el cuadro de texto Marco de trabajo de destino se muestra que el proyecto tiene como destino .NET 7.0.

  3. Si usa Visual Basic, borre el texto del cuadro de texto Espacio de nombres raíz.

    Project properties for the class library

    En cada proyecto, Visual Basic crea automáticamente un espacio de nombres que corresponde al nombre del proyecto. En este tutorial, definirá un espacio de nombres de nivel superior mediante la palabra clave namespace en el archivo de código.

  4. Reemplace el código de la ventana de código para Class1.cs o Class1.vb por el código siguiente y guarde el archivo. Si no se muestra el idioma que quiere usar, cambie el selector de idioma en la parte superior de la página.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    
    Imports System.Runtime.CompilerServices
    
    Namespace UtilityLibraries
        Public Module StringLibrary
            <Extension>
            Public Function StartsWithUpper(str As String) As Boolean
                If String.IsNullOrWhiteSpace(str) Then
                    Return False
                End If
    
                Dim ch As Char = str(0)
                Return Char.IsUpper(ch)
            End Function
        End Module
    End Namespace
    

    La biblioteca de clases, UtilityLibraries.StringLibrary, contiene un método denominado StartsWithUpper. Este método devuelve un valor Boolean que indica si la instancia de cadena actual comienza con un carácter en mayúscula. El estándar Unicode distingue caracteres en mayúsculas de caracteres en minúsculas. El método Char.IsUpper(Char) devuelve true si un carácter está en mayúsculas.

    StartsWithUpper se implementa como un método de extensión, de modo que se pueda llamar como si fuera un miembro de la clase String. El signo de interrogación (?) después de string en el código de C# indica que la cadena puede ser NULL.

  5. En la barra de menú, seleccione Compilar>Compilar solución, o bien presione Ctrl+Mayús+B, para comprobar que el proyecto se compila sin errores.

Incorporación de una aplicación de consola a la solución

Agregue una aplicación de consola que use la biblioteca de clases. La aplicación solicitará al usuario que escriba una cadena y notificará si la cadena comienza con un carácter en mayúsculas.

  1. Agregue una nueva aplicación de consola de .NET denominada "ShowCase" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba consola. Elija C# o Visual Basic en la lista de lenguajes y luego, Todas las plataformas en la lista de plataformas.

    3. Elija la plantilla Aplicación de consola y, después, seleccione Siguiente.

    4. En la página Configure el nuevo proyecto, escriba ShowCase en el cuadro Nombre del proyecto. Después, haga clic en Siguiente.

    5. En la página Información adicional, seleccione .NET 7 (compatibilidad estándar) en el cuadro Marco. Luego, elija Crear.

  2. En la ventana de código del archivo Program.cs o Program.vb, reemplace todo el código con el siguiente código.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    
    Imports UtilityLibraries
    
    Module Program
        Dim row As Integer = 0
    
        Sub Main()
            Do
                If row = 0 OrElse row >= 25 Then ResetConsole()
    
                Dim input As String = Console.ReadLine()
                If String.IsNullOrEmpty(input) Then Return
    
                Console.WriteLine($"Input: {input} {"Begins with uppercase? ",30}: " +
                                  $"{If(input.StartsWithUpper(), "Yes", "No")} {Environment.NewLine}")
                row += 3
            Loop While True
        End Sub
    
        Private Sub ResetConsole()
            If row > 0 Then
                Console.WriteLine("Press any key to continue...")
                Console.ReadKey()
            End If   
            Console.Clear()
            Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}")
            row = 3  
        End Sub
    End Module
    

    El código usa la variable row para mantener un recuento del número de filas de datos escritas en la ventana de consola. Siempre que sea mayor o igual a 25, el código borra la ventana de consola y muestra un mensaje al usuario.

    El programa le pide al usuario que escriba una cadena. Indica si la cadena comienza con un carácter en mayúsculas. Si el usuario presiona la tecla Entrar sin especificar una cadena, la aplicación finaliza y la ventana de la consola se cierra.

Agregar una referencia de proyecto

En un principio, el nuevo proyecto de aplicación de consola no tiene acceso a la biblioteca de clases. Para que pueda llamar a los métodos de la biblioteca de clases, cree una referencia de proyecto al proyecto de biblioteca de clases.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Dependencias del proyecto ShowCase y seleccione Agregar referencia de proyecto.

    Add reference context menu in Visual Studio

  2. En el cuadro de diálogo Administrador de referencias, seleccione el proyecto StringLibrary y después Aceptar.

    Reference Manager dialog with StringLibrary selected

Ejecutar la aplicación

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto Presentación y seleccione Establecer como proyecto de inicio en el menú contextual.

    Visual Studio project context menu to set startup project

  2. Presione CTRL+F5 para compilar y ejecutar el programa sin depuración.

  3. Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.

    Console window with ShowCase running

Recursos adicionales

Pasos siguientes

En este tutorial, ha creado una prueba unitaria de una biblioteca de clases. En el siguiente tutorial, aprenderá a hacer una prueba unitaria de la biblioteca de clases.

También puede omitir las pruebas unitarias automatizadas y aprender a compartir la biblioteca mediante la creación de un paquete NuGet:

También puede obtener más información sobre cómo publicar una aplicación de consola. Si publica la aplicación de consola a partir de la solución que ha creado en este tutorial, la biblioteca de clases lo incluirá como un archivo .dll.

En este tutorial, creará una sencilla clases de utilidades que contiene un único método de control de cadenas.

Una biblioteca de clases define los tipos y los métodos que se llaman desde una aplicación. Si la biblioteca tiene como destino .NET Standard 2.0, se puede llamar mediante cualquier implementación de .NET (incluido .NET Framework) que admita .NET Standard 2.0. Si la biblioteca tiene como destino .NET 6, la puede llamar cualquier aplicación que tenga como destino .NET 6. En este tutorial se muestra cómo seleccionar .NET 6 como destino.

Al crear una biblioteca de clases, puede distribuirla como un paquete NuGet o un componente empaquetado con la aplicación en la que se usa.

Prerrequisitos

Crear una solución

Empiece por crear una solución en blanco para colocar el proyecto de biblioteca de clases en ella. Una solución de Visual Studio sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.

Para crear la solución en blanco:

  1. Inicie Visual Studio.

  2. En la ventana de inicio, elija Crear un proyecto nuevo.

  3. En el cuadro de búsqueda de la página Crear un nuevo proyecto, escriba solución. Elija la plantilla Solución en blanco y luego seleccione Siguiente.

    Blank solution template in Visual Studio

  4. En la página Configure el nuevo proyecto, escriba ClassLibraryProjects en el cuadro Nombre de la solución. Luego, elija Crear.

Crear un proyecto de biblioteca de clases

  1. Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba biblioteca. En la lista de lenguajes, elija C# o Visual Basic y, luego, en la lista de plataformas, elija Todas las plataformas. Elija la plantilla Biblioteca de clases y luego Siguiente.

    3. En la página Configurar el nuevo proyecto, escriba StringLibrary en el cuadro Nombre del proyecto y, después, seleccione Siguiente.

    4. En la página Información adicional, seleccione .NET 6 (Compatibilidad a largo plazo) y, después, elija Crear.

  2. Asegúrese de que la biblioteca tiene como destino la versión correcta de .NET. Haga clic con el botón derecho en el proyecto de biblioteca en el Explorador de soluciones y, luego, seleccione Propiedades. En el cuadro de texto Plataforma de destino se muestra que el proyecto tiene como destino .NET 6.0.

  3. Si usa Visual Basic, borre el texto del cuadro de texto Espacio de nombres raíz.

    Project properties for the class library

    En cada proyecto, Visual Basic crea automáticamente un espacio de nombres que corresponde al nombre del proyecto. En este tutorial, definirá un espacio de nombres de nivel superior mediante la palabra clave namespace en el archivo de código.

  4. Reemplace el código de la ventana de código para Class1.cs o Class1.vb por el código siguiente y guarde el archivo. Si no se muestra el idioma que quiere usar, cambie el selector de idioma en la parte superior de la página.

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            char ch = str[0];
            return char.IsUpper(ch);
        }
    }
    
    Imports System.Runtime.CompilerServices
    
    Namespace UtilityLibraries
        Public Module StringLibrary
            <Extension>
            Public Function StartsWithUpper(str As String) As Boolean
                If String.IsNullOrWhiteSpace(str) Then
                    Return False
                End If
    
                Dim ch As Char = str(0)
                Return Char.IsUpper(ch)
            End Function
        End Module
    End Namespace
    

    La biblioteca de clases, UtilityLibraries.StringLibrary, contiene un método denominado StartsWithUpper. Este método devuelve un valor Boolean que indica si la instancia de cadena actual comienza con un carácter en mayúscula. El estándar Unicode distingue caracteres en mayúsculas de caracteres en minúsculas. El método Char.IsUpper(Char) devuelve true si un carácter está en mayúsculas.

    StartsWithUpper se implementa como un método de extensión, de modo que se pueda llamar como si fuera un miembro de la clase String. El signo de interrogación (?) después de string en el código de C# indica que la cadena puede ser NULL.

  5. En la barra de menú, seleccione Compilar>Compilar solución, o bien presione Ctrl+Mayús+B, para comprobar que el proyecto se compila sin errores.

Incorporación de una aplicación de consola a la solución

Agregue una aplicación de consola que use la biblioteca de clases. La aplicación solicitará al usuario que escriba una cadena y notificará si la cadena comienza con un carácter en mayúsculas.

  1. Agregue una nueva aplicación de consola de .NET denominada "ShowCase" a la solución.

    1. Haga clic con el botón derecho en la solución en el Explorador de soluciones y seleccione Agregar>Nuevo proyecto.

    2. En el cuadro de búsqueda de la página Agregar un nuevo proyecto, escriba consola. Elija C# o Visual Basic en la lista de lenguajes y luego, Todas las plataformas en la lista de plataformas.

    3. Elija la plantilla Aplicación de consola y, después, seleccione Siguiente.

    4. En la página Configure el nuevo proyecto, escriba ShowCase en el cuadro Nombre del proyecto. Después, haga clic en Siguiente.

    5. En la página Información adicional, seleccione .NET 6 (Compatibilidad a largo plazo) en el cuadro de plataforma. Luego, elija Crear.

  2. En la ventana de código del archivo Program.cs o Program.vb, reemplace todo el código con el siguiente código.

    using UtilityLibraries;
    
    class Program
    {
        static void Main(string[] args)
        {
            int row = 0;
    
            do
            {
                if (row == 0 || row >= 25)
                    ResetConsole();
    
                string? input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                Console.WriteLine($"Input: {input}");
                Console.WriteLine("Begins with uppercase? " +
                     $"{(input.StartsWithUpper() ? "Yes" : "No")}");
                Console.WriteLine();
                row += 4;
            } while (true);
            return;
    
            // Declare a ResetConsole local method
            void ResetConsole()
            {
                if (row > 0)
                {
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
                Console.Clear();
                Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}");
                row = 3;
            }
        }
    }
    
    Imports UtilityLibraries
    
    Module Program
        Dim row As Integer = 0
    
        Sub Main()
            Do
                If row = 0 OrElse row >= 25 Then ResetConsole()
    
                Dim input As String = Console.ReadLine()
                If String.IsNullOrEmpty(input) Then Return
    
                Console.WriteLine($"Input: {input} {"Begins with uppercase? ",30}: " +
                                  $"{If(input.StartsWithUpper(), "Yes", "No")} {Environment.NewLine}")
                row += 3
            Loop While True
        End Sub
    
        Private Sub ResetConsole()
            If row > 0 Then
                Console.WriteLine("Press any key to continue...")
                Console.ReadKey()
            End If   
            Console.Clear()
            Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}")
            row = 3  
        End Sub
    End Module
    

    El código usa la variable row para mantener un recuento del número de filas de datos escritas en la ventana de consola. Siempre que sea mayor o igual a 25, el código borra la ventana de consola y muestra un mensaje al usuario.

    El programa le pide al usuario que escriba una cadena. Indica si la cadena comienza con un carácter en mayúsculas. Si el usuario presiona la tecla Entrar sin especificar una cadena, la aplicación finaliza y la ventana de la consola se cierra.

Agregar una referencia de proyecto

En un principio, el nuevo proyecto de aplicación de consola no tiene acceso a la biblioteca de clases. Para que pueda llamar a los métodos de la biblioteca de clases, cree una referencia de proyecto al proyecto de biblioteca de clases.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Dependencias del proyecto ShowCase y seleccione Agregar referencia de proyecto.

    Add reference context menu in Visual Studio

  2. En el cuadro de diálogo Administrador de referencias, seleccione el proyecto StringLibrary y después Aceptar.

    Reference Manager dialog with StringLibrary selected

Ejecutar la aplicación

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto Presentación y seleccione Establecer como proyecto de inicio en el menú contextual.

    Visual Studio project context menu to set startup project

  2. Presione CTRL+F5 para compilar y ejecutar el programa sin depuración.

  3. Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.

    Console window with ShowCase running

Recursos adicionales

Pasos siguientes

En este tutorial, ha creado una prueba unitaria de una biblioteca de clases. En el siguiente tutorial, aprenderá a hacer una prueba unitaria de la biblioteca de clases.

También puede omitir las pruebas unitarias automatizadas y aprender a compartir la biblioteca mediante la creación de un paquete NuGet:

También puede obtener más información sobre cómo publicar una aplicación de consola. Si publica la aplicación de consola a partir de la solución que ha creado en este tutorial, la biblioteca de clases lo incluirá como un archivo .dll.