FoxPress – Diciembre 2001

 

Creación y uso de un Componente .NET desde VFP

 

http://www.fpress.com/

 

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