Bienvenidos sean a este post, hoy hablaremos sobre dos temas que estan internamente relacionados como son los del titulo, primero comencemos con los Assemblies.
Los Assemblies podriamos dividirlos en dos partes:
- Archivos .EXE
- Archivos .DLL
Los primeros son los archivos que vinimos usando hasta ahora ya que son los programas (o aplicaciones) ejecutables, en cambio los segundos son librerias y su nombre significa Libreria de Enlace Dinamico (por sus siglas en Ingles) pero cual es la diferencia entre ambas? Es que en el primero podremos usarlo directamente y en el segundo caso deberemos importarlo e implementarla, ok pero si son tan distintas que las une? Que las dos contienen un conjunto de clases que nos permitirian trabajar sin inconvenientes, para ver algunas ventajas y conceptos vamos a crear una nueva solucion:
- Lenguaje: C#
- Plataforma: Windows
- Tipo de Proyecto: Consola (Net Framework)
- Nombre Proyecto: Listas
- Nombre Solucion: Listas
- Version Framework: La ultima disponible.
Con esto generamos nuestra solucion base y nuestro siguiente paso sera crear una nueva clase y para ello haremos click con el boton derecho sobre nuestro proyecto dentro de la solucion en la solapa de Explorador de soluciones y seleccionen Agregar -> Nuevo elemento

Aca nos aparecera una nueva ventana donde seleccionaremos Clase y usaremos el nombre Personas.cs

Una vez creado nuestra nueva clase la veremos en el Explorador de Soluciones

Con nuestra clase creada vamos a reemplazar el codigo generado automaticamente por el siguiente:
using System;
using System.Collections.Generic;
namespace Listas
{
class Personas
{
List<string> listado;
public Personas()
{
listado = new List<string>();
}
public void AgregarPersonas(string nombre)
{
listado.Add(nombre);
}
public string Recuperar(int i)
{
return listado[i];
}
public int Contar()
{
return listado.Count;
}
}
}
En este caso vamos a tener un objeto de tipo List al cual le agregaremos los nombres de las personas, y vamos a disponer de tres metodos, uno para agregar personas a lista, uno para recuperarlo y otro para contar los elementos en la lista, pasemos a modificar el Main de la clase Program.cs de la siguiente manera:
Program.cs
using System;
namespace Listas
{
class Program
{
static void Main(string[] args)
{
Personas persona = new Personas();
persona.AgregarPersonas("Martin Miranda");
persona.AgregarPersonas("Enzo Tortore");
persona.AgregarPersonas("DarkZero Aleman");
for(int i=0; i<persona.Contar(); i++)
{
Console.WriteLine(persona.Recuperar(i));
}
}
}
}
En este codigo primero crearemos un objeto de la clase Personas, luego le agregaremos tres personas por medio de AgregarPersonas, para despues usar un bucle for donde por medio del metodo Contar obtenemos el total de personas en lista, para finalmente en el bloque del for por medio de Recuperar mostramos los datos en pantalla, si lo probamos por medio de Depurar->Iniciar sin depurar veremos esta salida

Con esto tenemos nuestra solucion creada y funcionando, de lo primero que hablaremos es sobre una herramienta muy interesante como es el Examinador de Objetos, para habilitarlo debemos ir a Ver->Examinador de Objetos

En este caso nos abrira una nueva ventana como se ve a continuacion

En este caso podremos ver todos los objetos que estan relacionados con nuestra solucion, y no solamente nos traera los objetos del lenguaje sino tambien los propios de la solucion, por ejemplo elegi a la clase Personas y podemos ver como nos trajo todos los metodos y propiedades de esa clase, ahora veamos que sucede con el caso de Console

Al seleccionar Console a la derecha nos aparecera lo mismo que vimos antes, tanto los metodos como las propiedades de esa clase y esto lo podriamos hacer con cualquier objeto que tengamos disponible, como podran darse cuenta es muy util para saber que tenemos a nuestra disposicion, otra opcion interesante es poder compilar a nuestra solucion como una DLL en lugar de un EXE, para ello tenemos dos opciones, podemos hacer click con el boton derecho sobre el proyecto y elegir Propiedades

O bien pueden ir a Ver->Propiedades del proyecto

En este caso nos abrira una nueva ventana y dentro deberiamos seleccionar la opcion Aplicacion para luego ir a Tipo de salida, en este tendremos tres opciones como se ve a continuacion

Hablemos sobre las tres opciones disponibles:
- Aplicacion de Windows, genera una aplicacion para el entorno Windows
- Aplicacion de Consola, es el tipo de salida que vimos hasta ahora
- Biblioteca de Clases, es la opcion para generar un dll
Debemos seleccionar la ultima opcion, no modificamos nada mas y por ultimo lo salvamos ya sea por medio del icono o Ctrl+S, antes de compilarlo veamos el estado actual de nuestro directorio
C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: 00C4-E72F
Directorio de C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug
12/05/2020 07:31 p.m. <DIR> .
12/05/2020 07:31 p.m. <DIR> ..
12/05/2020 07:33 p.m. 5.120 Listas.exe
12/05/2020 04:30 p.m. 189 Listas.exe.config
12/05/2020 07:33 p.m. 22.016 Listas.pdb
3 archivos 27.325 bytes
2 dirs 12.178.526.208 bytes libres
C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug>
Con esto visto lo siguiente es Compilar -> Compilar Solucion y procedamos a ver como quedo nuestro directorio
C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug>dir
El volumen de la unidad C no tiene etiqueta.
El número de serie del volumen es: 00C4-E72F
Directorio de C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug
12/05/2020 08:45 p.m. <DIR> .
12/05/2020 08:45 p.m. <DIR> ..
12/05/2020 08:45 p.m. 4.608 Listas.dll
12/05/2020 04:30 p.m. 189 Listas.dll.config
12/05/2020 08:45 p.m. 22.016 Listas.pdb
3 archivos 26.813 bytes
2 dirs 12.177.068.032 bytes libres
C:\Users\tinchicus\Source\Repos\Listas\Listas\bin\Debug>
En este caso podemos ver como se reemplazo nuestro archivo por uno de tipo libreria, si probamos nuestra aplicacion nos sucedera lo siguiente

Esto es debido a que la libreria no tiene ninguna opcion de ser ejecutable, simplemente es un conjunto de clases pero que tiene de util esto? En realidad es util para compartir estas clases con otras soluciones o proyectos, ya que las DLL tanto del sistema, como los del Framework o del lenguaje, nos permiten trabajar con herramientas que desarrollo otras personas y en muchos casos evitar tener que reinventar la polvora 😂, en este campo entran en accion las referencias, para agregar una nueva referencia debemos ir nuevamente al explorador de soluciones y hacer click con el boton derecho sobre la opcion de Referencias en el proyecto y seleccionar Agregar referencia

Una vez seleccionado nos aparecera el siguiente cuadro

En este caso veremos todos los elementos disponibles para nuestro proyecto, inclusive si estuvieramos en un proyecto entre varias personas podriamos acceder a las mismas por medio de la opcion de los Proyectos Compartidos o por medio de COM o Examinar podemos descargar desde otros sitios, para entender mejor este concepto vamos a tomar Listas y vamos a modificarlo para que no solamente escriba los nombres sino tambien los pronuncie, para ello vamos a usar la libreria System.Speech para ello vamos a repetir el procedimiento anterior de agregar referencia y en el cuadro anterior dentro de ensamblados (assemblies), con el cuadro de la derecha buscaremos la palabra speech y nos aparecera lo siguiente

Lo tildan como en la imagen para seleccionarlo y presionan Aceptar, este hara que esta libreria sea agregada a nuestro conjunto de Referencias, podemos observarlo en el explorador de soluciones

Con las referencias actualizadas y ya disponible nuestra nueva libreria vamos a proceder a modificar el Program.cs de Lista para ver como funciona nuestra libreria
using System;
using System.Speech.Synthesis;
namespace Listas
{
class Program
{
static void Main(string[] args)
{
Personas persona = new Personas();
persona.AgregarPersonas("Martin Miranda");
persona.AgregarPersonas("Enzo Tortore");
persona.AgregarPersonas("DarkZero Aleman");
SpeechSynthesizer voz = new SpeechSynthesizer();
for(int i=0; i<persona.Contar(); i++)
{
Console.WriteLine(persona.Recuperar(i));
voz.Speak(persona.Recuperar(i));
}
}
}
}
Lo primero que debemos hacer es agregar a System.Speech.Synthesis por medio de using para poder tener nuestra libreria disponible, tambien agregamos una persona mas como ejemplo, nuestra siguiente modificacion sera el agregado de esta linea:
SpeechSynthesizer voz = new SpeechSynthesizer();
Esta sera el encargado de generar el objeto para tener acceso a la clase SpeechSynthesizer, la que realmente hara la magia, la creamos con nuestro constructor, nuestra siguiente modificacion sera en el bucle for donde agregaremos la siguiente linea:
voz.Speak(persona.Recuperar(i));
Este sera el metodo elegido para poder procesar el texto de los nombres por medio del sintetizador de voz, este metodo espera un valor de tipo string, es decir podriamos haber ingresado un texto entre comillas de forma literal, o por medio de una variable, o como en este caso por medio de lo que nos devuelve una funcion, nos dira el resultado, vamos a probarlo y ver su resultado por medio del siguiente video
Nota: Antes de compilarlo recuerden volver a las propiedades del proyecto y seleccionar Aplicacion de Consola.
En el video podemos ver como nuestro sintetizador funciona de manera correcta, como podran darse cuenta esto nos facilita nuestras tareas, ya que podemos tener colaboraciones de otras personas, referenciar librerias de terceros, comerciales o no, librerias de compañeros de trabajo, etc, sin necesidad de tener que perder tiempo en crear una solucion que puede estar disponible o mismo nosotros podemos crear una solucion para otra persona, el mundo de la programacion es genial en este sentido.
En resumen, hoy hemos visto como son las assemblies, ensamblados, para que sirven, que son, como se componen, que nos facilitan, algunas herramientas disponibles para ver sus metodos y propiedades, tambien hemos visto las referencias, que son, que nos facilitan, y modificamos nuestra solucion Lista con una herramienta muy util, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
1.00 $