Tutorial: Creación de una biblioteca de clases de .NET con Visual Studio Code
En este tutorial, creará una sencilla biblioteca 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 componente de terceros o como un componente empaquetado con una o varias aplicaciones.
Requisitos previos
Visual Studio Code con la extensión de C# instalada.
Si tiene instalada la extensión del Kit de desarrollo de C#, desinstálela o deshabilítela. Esta serie de tutoriales no la usa.
Para saber cómo instalar extensiones en Visual Studio Code, vea el Marketplace de extensiones de VS Code.
El SDK de .NET 8.
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 sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.
Inicie Visual Studio Code.
Seleccione Archivo>Abrir carpeta (Abrir... en macOS) en el menú principal.
En el cuadro de diálogo Abrir carpeta, cree una carpeta ClassLibraryProjects y haga clic en Seleccionar carpeta (Abrir en macOS).
Para abrir el Terminal en Visual Studio Code, seleccione Ver>Terminal en el menú principal.
Se abre el terminal con el símbolo del sistema en la carpeta ClassLibraryProjects.
En el Terminal, escriba este comando:
dotnet new sln
La salida del terminal se parece al ejemplo siguiente:
The template "Solution File" was created successfully.
Crear un proyecto de biblioteca de clases
Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.
En el terminal, ejecute el siguiente comando para crear un proyecto de biblioteca:
dotnet new classlib -o StringLibrary
El comando
-o
o--output
especifica la ubicación para colocar la salida generada.La salida del terminal se parece al ejemplo siguiente:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de biblioteca a la solución:
dotnet sln add StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
Asegúrese de que la biblioteca tiene como destino .NET 8. En Explorer, abra el archivo StringLibrary/StringLibrary.csproj.
En el elemento
TargetFramework
, se muestra que el proyecto tiene como destino .NET 8.0.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> </PropertyGroup> </Project>
Abra Class1.cs y reemplace el código por el siguiente.
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); } }
La biblioteca de clases,
UtilityLibraries.StringLibrary
, contiene un método denominadoStartsWithUpper
. 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) devuelvetrue
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.Guarde el archivo.
Ejecute el siguiente comando para compilar la solución y comprobar que el proyecto se compila sin errores.
dotnet build
La salida del terminal se parece al ejemplo siguiente:
Microsoft (R) Build Engine version 17.8.0+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net8.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
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.
En el terminal, ejecute el siguiente comando para crear un proyecto de consola de aplicación:
dotnet new console -o ShowCase
La salida del terminal se parece al ejemplo siguiente:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de aplicación de consola a la solución:
dotnet sln add ShowCase/ShowCase.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `ShowCase\ShowCase.csproj` added to the solution.
Abra ShowCase/Program.cs y reemplace todo el código por el siguiente.
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; } } }
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.
Guarde los cambios.
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.
Ejecute el siguiente comando:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
Ejecutar la aplicación
Ejecute el siguiente comando en el terminal:
dotnet run --project ShowCase/ShowCase.csproj
Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.
La salida del terminal se parece al ejemplo siguiente:
Press <Enter> only to exit; otherwise, enter a string and press <Enter>: A string that starts with an uppercase letter Input: A string that starts with an uppercase letter Begins with uppercase? : Yes a string that starts with a lowercase letter Input: a string that starts with a lowercase letter Begins with uppercase? : No
Recursos adicionales
- Desarrollo de bibliotecas con la CLI de .NET
- Versiones de .NET Standard y las plataformas que admiten.
Pasos siguientes
En este tutorial, ha creado una solución, ha agregado un proyecto de biblioteca y ha agregado un proyecto de aplicación de consola que usa la biblioteca. En el siguiente tutorial, agregará un proyecto de prueba unitaria a la solución.
En este tutorial, creará una sencilla biblioteca 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 componente de terceros o como un componente empaquetado con una o varias aplicaciones.
Requisitos previos
- Visual Studio Code con la extensión de C# instalada. Para saber cómo instalar extensiones en Visual Studio Code, vea el Marketplace de extensiones de VS Code.
- El SDK de .NET 7.
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 sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.
Inicie Visual Studio Code.
Seleccione Archivo>Abrir carpeta (Abrir... en macOS) en el menú principal.
En el cuadro de diálogo Abrir carpeta, cree una carpeta ClassLibraryProjects y haga clic en Seleccionar carpeta (Abrir en macOS).
Para abrir el Terminal en Visual Studio Code, seleccione Ver>Terminal en el menú principal.
Se abre el terminal con el símbolo del sistema en la carpeta ClassLibraryProjects.
En el Terminal, escriba este comando:
dotnet new sln
La salida del terminal se parece al ejemplo siguiente:
The template "Solution File" was created successfully.
Crear un proyecto de biblioteca de clases
Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.
En el terminal, ejecute el siguiente comando para crear un proyecto de biblioteca:
dotnet new classlib -o StringLibrary
El comando
-o
o--output
especifica la ubicación para colocar la salida generada.La salida del terminal se parece al ejemplo siguiente:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de biblioteca a la solución:
dotnet sln add StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
Asegúrese de que la biblioteca tiene como destino .NET 7. En Explorer, abra el archivo StringLibrary/StringLibrary.csproj.
En el elemento
TargetFramework
se muestra que el proyecto tiene como destino .NET 7.0.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> </PropertyGroup> </Project>
Abra Class1.cs y reemplace el código por el siguiente.
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); } }
La biblioteca de clases,
UtilityLibraries.StringLibrary
, contiene un método denominadoStartsWithUpper
. 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) devuelvetrue
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.Guarde el archivo.
Ejecute el siguiente comando para compilar la solución y comprobar que el proyecto se compila sin errores.
dotnet build
La salida del terminal se parece al ejemplo siguiente:
Microsoft (R) Build Engine version 16.7.4+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net7.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
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.
En el terminal, ejecute el siguiente comando para crear un proyecto de consola de aplicación:
dotnet new console -o ShowCase
La salida del terminal se parece al ejemplo siguiente:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de aplicación de consola a la solución:
dotnet sln add ShowCase/ShowCase.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `ShowCase\ShowCase.csproj` added to the solution.
Abra ShowCase/Program.cs y reemplace todo el código por el siguiente.
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; } } }
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.
Guarde los cambios.
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.
Ejecute el siguiente comando:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
Ejecutar la aplicación
Ejecute el siguiente comando en el terminal:
dotnet run --project ShowCase/ShowCase.csproj
Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.
La salida del terminal se parece al ejemplo siguiente:
Press <Enter> only to exit; otherwise, enter a string and press <Enter>: A string that starts with an uppercase letter Input: A string that starts with an uppercase letter Begins with uppercase? : Yes a string that starts with a lowercase letter Input: a string that starts with a lowercase letter Begins with uppercase? : No
Recursos adicionales
- Desarrollo de bibliotecas con la CLI de .NET
- Versiones de .NET Standard y las plataformas que admiten.
Pasos siguientes
En este tutorial, ha creado una solución, ha agregado un proyecto de biblioteca y ha agregado un proyecto de aplicación de consola que usa la biblioteca. En el siguiente tutorial, agregará un proyecto de prueba unitaria a la solución.
En este tutorial, creará una sencilla biblioteca 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 componente de terceros o como un componente empaquetado con una o varias aplicaciones.
Requisitos previos
- Visual Studio Code con la extensión de C# instalada. Para saber cómo instalar extensiones en Visual Studio Code, vea el Marketplace de extensiones de VS Code.
- El SDK de .NET 6.
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 sirve como contenedor de uno o varios proyectos. Agregará otros proyectos relacionados a la misma solución.
Inicie Visual Studio Code.
Seleccione Archivo>Abrir carpeta (Abrir... en macOS) en el menú principal.
En el cuadro de diálogo Abrir carpeta, cree una carpeta ClassLibraryProjects y haga clic en Seleccionar carpeta (Abrir en macOS).
Para abrir el Terminal en Visual Studio Code, seleccione Ver>Terminal en el menú principal.
Se abre el terminal con el símbolo del sistema en la carpeta ClassLibraryProjects.
En el Terminal, escriba este comando:
dotnet new sln
La salida del terminal se parece al ejemplo siguiente:
The template "Solution File" was created successfully.
Crear un proyecto de biblioteca de clases
Agregue un nuevo proyecto de biblioteca de clases de .NET denominado "StringLibrary" a la solución.
En el terminal, ejecute el siguiente comando para crear un proyecto de biblioteca:
dotnet new classlib -f net6.0 -o StringLibrary
El comando
-f
o--framework
cambia el marco de destino predeterminado a la versiónnet6.0
.El comando
-o
o--output
especifica la ubicación para colocar la salida generada.La salida del terminal se parece al ejemplo siguiente:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de biblioteca a la solución:
dotnet sln add StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
Compruebe que la biblioteca tiene como destino .NET 6. En Explorer, abra el archivo StringLibrary/StringLibrary.csproj.
En el elemento
TargetFramework
se muestra que el proyecto tiene como destino .NET 6.0.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> </Project>
Abra Class1.cs y reemplace el código por el siguiente.
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); } }
La biblioteca de clases,
UtilityLibraries.StringLibrary
, contiene un método denominadoStartsWithUpper
. 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) devuelvetrue
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.Guarde el archivo.
Ejecute el siguiente comando para compilar la solución y comprobar que el proyecto se compila sin errores.
dotnet build
La salida del terminal se parece al ejemplo siguiente:
Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net6.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
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.
En el terminal, ejecute el siguiente comando para crear un proyecto de consola de aplicación:
dotnet new console -f net6.0 -o ShowCase
La salida del terminal se parece al ejemplo siguiente:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
Ejecute el siguiente comando para agregar el proyecto de aplicación de consola a la solución:
dotnet sln add ShowCase/ShowCase.csproj
La salida del terminal se parece al ejemplo siguiente:
Project `ShowCase\ShowCase.csproj` added to the solution.
Abra ShowCase/Program.cs y reemplace todo el código por el siguiente.
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; } } }
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.
Guarde los cambios.
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.
Ejecute el siguiente comando:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
La salida del terminal se parece al ejemplo siguiente:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
Ejecutar la aplicación
Ejecute el siguiente comando en el terminal:
dotnet run --project ShowCase/ShowCase.csproj
Para probar el programa, escriba cadenas y presione Entrar y, después, presione Entrar para salir.
La salida del terminal se parece al ejemplo siguiente:
Press <Enter> only to exit; otherwise, enter a string and press <Enter>: A string that starts with an uppercase letter Input: A string that starts with an uppercase letter Begins with uppercase? : Yes a string that starts with a lowercase letter Input: a string that starts with a lowercase letter Begins with uppercase? : No
Recursos adicionales
- Desarrollo de bibliotecas con la CLI de .NET
- Versiones de .NET Standard y las plataformas que admiten.
Pasos siguientes
En este tutorial, ha creado una solución, ha agregado un proyecto de biblioteca y ha agregado un proyecto de aplicación de consola que usa la biblioteca. En el siguiente tutorial, agregará un proyecto de prueba unitaria a la solución.