BasicLibraryExt 1.0.15
dotnet add package BasicLibraryExt --version 1.0.15
NuGet\Install-Package BasicLibraryExt -Version 1.0.15
<PackageReference Include="BasicLibraryExt" Version="1.0.15" />
<PackageVersion Include="BasicLibraryExt" Version="1.0.15" />
<PackageReference Include="BasicLibraryExt" />
paket add BasicLibraryExt --version 1.0.15
#r "nuget: BasicLibraryExt, 1.0.15"
#:package BasicLibraryExt@1.0.15
#addin nuget:?package=BasicLibraryExt&version=1.0.15
#tool nuget:?package=BasicLibraryExt&version=1.0.15
BasicLibraryExt
Biblioteca utilitaria para proyectos .NET con métodos de extensión y clases comunes para operaciones frecuentes: cadenas, objetos, archivos, JSON, cifrado simple y respuestas de operación.
El paquete mantiene compatibilidad con aplicaciones existentes en .NET Framework, .NET Standard y versiones modernas de .NET.
Instalación
Desde la CLI de .NET:
dotnet add package BasicLibraryExt
Desde la Consola del Administrador de Paquetes de Visual Studio:
Install-Package BasicLibraryExt
Compatibilidad
El paquete publica ensamblados para:
- .NET Framework 4.8
- .NET Standard 2.0
- .NET 5
- .NET 6
- .NET 8
Compilar y Ejecutar Pruebas
Restaurar paquetes:
dotnet restore .\BasicLibraryExt.sln
Compilar la solución:
dotnet build .\BasicLibraryExt.sln -c Release
Ejecutar pruebas automatizadas:
dotnet test .\TestBasicLibraryExt\TestBasicLibraryExt.csproj -c Release
Uso Básico
using BasicLibraryExt;
using static BasicLibraryExt.FileExtensions;
Extensiones Para String
Formato de texto
var titulo = "dirección de impueStos y aduanas naciOnales dian";
Console.WriteLine(titulo.ToTitle());
// Dirección de impuestos y aduanas nacionales dian
Console.WriteLine(titulo.ToTitleEachWord());
// Dirección de Impuestos y Aduanas Nacionales DIAN
Limpieza de espacios
var texto = " esta es una prueba ";
Console.WriteLine(texto.TrimExcessSpaces());
// esta es una prueba
Búsqueda y validaciones
var frase = "Colombia tierra querida";
if (frase.StringContains("tierra"))
{
Console.WriteLine("Existe");
}
if ("usuario@dominio.com".IsValidEmail())
{
Console.WriteLine("Email válido");
}
Extracción de texto
var texto = "BasicLibraryExt";
Console.WriteLine(texto.Left(5)); // Basic
Console.WriteLine(texto.Right(3)); // Ext
Console.WriteLine(texto.Mid(5, 7)); // Library
Console.WriteLine(texto.FirstWord()); // BasicLibraryExt
Rangos y colecciones
var nombres = new List<string> { "Ana", "Luis", "Pedro" };
if ("Luis".IsIn(nombres))
{
Console.WriteLine("Luis está en la lista");
}
if ("1370".IsBetween("1305", "1380"))
{
Console.WriteLine("El valor está dentro del rango");
}
Valores numéricos en letras
var precio = 1478292.47m;
Console.WriteLine(precio.ToWords());
Console.WriteLine(precio.ToWords(enumMoneda.COP));
Console.WriteLine(precio.ToWords(enumMoneda.USD));
Monedas soportadas:
enumMoneda.COPenumMoneda.USDenumMoneda.EURenumMoneda.GBP
Cifrado y Descifrado
La biblioteca incluye métodos de extensión para cifrar y descifrar texto usando AES.
Usando una clave explícita
var masterKey = "clave-maestra-de-mi-aplicacion";
var textoPlano = "Texto confidencial";
var textoCifrado = textoPlano.Encrypt(masterKey);
var textoOriginal = textoCifrado.Decrypt(masterKey);
Usando archivo de master key
También puedes configurar la aplicación y el cliente para que la librería busque el archivo master.key automáticamente.
StringExtensions.App = "MiAplicacion";
StringExtensions.Client = "ClienteA";
var textoCifrado = "Texto confidencial".Encrypt();
var textoOriginal = textoCifrado.Decrypt();
En Windows, la ruta se construye dentro de LocalApplicationData:
%LOCALAPPDATA%\MiAplicacion\ClienteA\master.key
En Linux, la ruta se construye así:
/etc/MiAplicacion/ClienteA/master.key
Extensiones Para Object
object valor = "12345";
if (valor.IsNumeric())
{
Console.WriteLine("El objeto es numérico");
}
var entero = valor.As<int>();
var costo = valor.As<decimal>(0m);
También puedes validar números positivos:
object cantidad = 25;
if (cantidad.IsPositiveNumber())
{
Console.WriteLine("La cantidad es positiva");
}
Archivos y Directorios
Leer texto
var ruta = @"C:\temp\archivo.txt";
if (ruta.IsPathFileName())
{
var contenido = ruta.GetText();
}
Validar existencia de archivos
if (FileExists(@"C:\temp\archivo.txt"))
{
Console.WriteLine("El archivo existe");
}
Crear directorios si no existen
FileExtensions.EnsureDirectoryExists(@"C:\temp\reportes");
JSON
La biblioteca usa System.Text.Json con salida indentada, soporte para enums como texto y codificación relajada para caracteres especiales.
var persona = new Persona
{
Id = 2,
Nombre = "Eduardo Hernández",
Direccion = "Calle 72 # 43 - 27",
Telefono = "3008727643"
};
var json = persona.ToJson();
var copia = json.ToObject<Persona>();
public class Persona
{
public int Id { get; set; }
public string Nombre { get; set; } = string.Empty;
public string Direccion { get; set; } = string.Empty;
public string Telefono { get; set; } = string.Empty;
}
FromJson<T>()se mantiene por compatibilidad, pero está marcado como obsoleto. UsaToObject<T>()en código nuevo.
OperationResult<T>
OperationResult<T> permite devolver una respuesta estándar desde métodos de negocio o servicios, incluyendo:
Ok: indica si la operación fue exitosa.Response: datos devueltos por la operación.Errors: lista de errores.Warnings: lista de advertencias.Describe(): descripción detallada del resultado.
OperationResult<string> resultado = EnviarCorreo("usuario@dominio.com");
if (resultado.Ok)
{
Console.WriteLine($"TrackId: {resultado.Response}");
}
else
{
Console.WriteLine(resultado.Describe());
}
Ejemplo completo:
public static OperationResult<string> EnviarCorreo(string email)
{
var errors = new List<Error>();
var warnings = new List<Error>();
if (!email.IsValidEmail())
{
errors.Add(new Error
{
Source = ErrorSource.BackEnd,
Codigo = "E01",
Descripcion = "El email no tiene un formato válido"
});
}
if (errors.Count > 0)
{
return OperationResult<string>.FromResult(errors: errors, warnings: warnings);
}
var trackId = Guid.NewGuid().ToString();
return OperationResult<string>.FromResult(trackId, warnings: warnings);
}
También puedes crear una respuesta exitosa directamente:
var resultado = OperationResult<string>.Success("OK");
Manejo de Errores
var error = new Error
{
Source = ErrorSource.DataBase,
Codigo = "DB01",
Descripcion = "No fue posible conectar con la base de datos"
};
Fuentes de error disponibles:
NoneBackEndFrontEndMiddleWareExternalServiceDataBaseFileSystemOther
APIs Obsoletas
Las siguientes APIs se mantienen para no romper compatibilidad con aplicaciones existentes, pero se recomienda evitarlas en código nuevo:
MtxError: usaError.RespMethod: usaOperationResult<T>.LeerTexto: usaGetText.FromJson<T>: usaToObject<T>.
Notas de Compatibilidad
- El paquete conserva
netstandard2.0para proyectos que necesiten máxima compatibilidad. - El paquete incluye targets específicos para
net5.0,net6.0ynet8.0para que las aplicaciones modernas usen el ensamblado más adecuado. - Para
net48ynetstandard2.0, el paquete referenciaSystem.Text.Json. - Para
net5.0,net6.0ynet8.0,System.Text.Jsonse toma desde el framework correspondiente.
Licencia
Este software es propiedad de SISTEMAS 360 SAS.
Su uso está sujeto a los términos definidos por el Licenciante:
- Licencia de prueba: puede usarse gratuitamente por un periodo de 6 meses a partir de la primera instalación.
- Licencia comercial: después del periodo de prueba, el uso requiere una suscripción mensual o anual.
- Restricciones: no se permite descompilación, ingeniería inversa, redistribución, sublicenciamiento o reventa sin autorización escrita.
- Propiedad intelectual: el software es propiedad exclusiva del Licenciante.
- Limitación de responsabilidad: el software se entrega tal cual.
- Terminación: el incumplimiento de estos términos termina automáticamente la licencia de uso.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- System.Text.Json (>= 9.0.8)
-
.NETStandard 2.0
- System.Text.Json (>= 9.0.8)
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BasicLibraryExt:
| Package | Downloads |
|---|---|
|
MtxLog
Biblioteca para Logs diarios (APIs y Apps), compatible con .NET Framework, .NET Standard y .NET moderno |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.15 | 122 | 7/6/2026 |
| 1.0.14 | 112 | 6/27/2026 |
| 1.0.13 | 103 | 5/16/2026 |
| 1.0.12 | 109 | 5/16/2026 |
| 1.0.11 | 625 | 12/1/2025 |
| 1.0.10 | 474 | 9/10/2025 |
| 1.0.9 | 220 | 9/10/2025 |
| 1.0.8 | 214 | 9/8/2025 |
| 1.0.7 | 205 | 9/5/2025 |
| 1.0.6 | 220 | 9/2/2025 |
| 1.0.5 | 228 | 9/2/2025 |
| 1.0.4 | 222 | 9/2/2025 |
| 1.0.3 | 258 | 8/28/2025 |
| 1.0.2 | 277 | 8/27/2025 |
| 1.0.1 | 266 | 8/26/2025 |
| 1.0.0 | 277 | 8/26/2025 |