Creación y uso de un Componente .NET
desde VFP
Por Abel Sorzano
El .NET Framework podemos decir que
se subdivide en diversos Framework que los podemos agrupar, muy en líneas
generales, en los siguientes grandes bloques:
· Aplicaciones de Consola
· Aplicaciones Windows GUI (Windows Forms) (.EXE)
·
Componentes
Windows (.DLL)
·
ASP.NET
·
ADO.NET
· Servicios Web
· Servicios para Windows 2000,NT y XP
· Componentes Empresariales .NET para Servidores
Un ejemplo de Aplicación de Consola lo vimos en la
revista de Enero de este año.
Las Pantallas Windows las puedes crear con Visual C# o por código. En
FoxPress de Febrero de 2001 se mostró, paso a paso, como crear una sencillo
formulario mediante Visual C#.
En este artículo nos centraremos
en la creación de Componente .NET .
Partimos del
siguiente código:
//Escrito por
<pon tu nombre>
//MiPrimer.cs
using System;
namespace miNamespace
{
public class sumodos
{
public int Addtr(int
x,int y)
{
return (x +y); //
Devuelve la suma
}
}
}
1.- Tomamos el
anterior código y lo ponemos es un Notepad
y lo guardamos con el nombre MIPrimer.cs
2.- Como queremos
que el componente se pueda usar desde cualquier cliente COM (en este caso Fox)
debemos crearle lo que se llama un nombre unico (Strong Name), que hace el
assembly unico mediante una utilidad llamada:Sn.Exe.
Escribimos lo
siguiente:
sn -k
MiPrimer.snk
Todas las clases compiladas con Visual Studio .NET tienen una serie de información como su nombre, versión. Clave pública y firma digital. Si no usas Visual Studio .NET como es nuestro caso deberás crearla partiendo del nombre y para eso está la herramienta sn.exe también llamada Strong Name Tool.
3.- Una vez
tenemos el nombre único modificamos el fuente del componente .NET en
MiPrimer.cs y
escribimos:
//Escrito por
<pon tu nombre>
//MiPrimer.cs
using System;
// ->
using System.Reflection;
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyKeyFile("MiPrimer.snk")]
// <-
namespace miNamespace
{
public class sumodos
{
public int Addtr(int
x,int y)
{
return (x +y); //
Devuelve la suma
}
}
}
Como ves lo único
que le hemos añadido es el texto entre las flechas.
3.- Lo compilamos
con:
csc.exe /target:library
MiPrimer.cs
Puede que te dé el error de que no encuentra csc.exe (en ese caso mira al
final de la revista como hacer accesible el csc.ese en el path de tu máquina.
Con esto ya
tenemos la .DLL
Para ver todas
las opciones del compilador me remito a la documentación.
4.- Lo
registramos en el Global Assembly
Cache, para hacerlo acudimos al gacutil.exe
gacutil
/i miPrimer.dll
5.- Por último
necesitamos registrarla en el registry
para que sea accesible por todos. Para eso usamos la utilidad REGASM.EXE . La
utilidad RegAsm.exe: (Assembly Registration Tool) se usa para registrar y
desregistrar una clase .NET (Componente .NET). Añade información acerca del
objeto al registry de forma que los clientes COM, en este caso Fox, pueda usar
la clase (componente) .NET de forma transparente.
RegAsm
/tlb:MiPrimer.tlb MiPrimer.dll
6.- Y voila...
El siguiente paso
es probarlo desde Fox.Para eso haremos:
ox = CREATE('Minamespace.sumodos')
? ox.Addtr(1,2)
que nos devolverá
un magnifico 3 con lo que vemos la forma de usar los componentes .NET desde
Fox.
Fíjate como
estamos usando a la hora de invocar el objeto el nombre del Namespace (no el del
fichero físico de la DLL) y el de la clase.
FoxPress – Diciembre de 2001
© 2001 FoxPress. All rights reserved