.Net y COM+

21/04/2004 - 13:13 por Roberto G.A. | Informe spam
Hola a tod@s,
Estoy intentando crear un componente COM+ en C# pero en el
mismo instante que lo registro en COM+ me da un error,
detallo cuales son los pasos que sigo por si alguien me
puede ayudar.

1.- Creo un nuevo proyecto

2.- Le añado la referencia System:EnterpriseServices y
añado la declaración using de la misma referencia.

3.- Heredo de la clase ServicedComponent.

4.- Añado las etiquetas siguientes al ensamblado:
[assembly: ApplicationName("MiCOMApp")]
[assembly: ApplicationActivation(ActivationOption.Server)]

5.- Añado al ensamblado un "strong name"

6.- Configuro adecuadamente el proyecto para que genere
la "tlb"
Register for COM Interop = True

7.- Añado el ensamblado al GAC

Pero al añadir el componente a COM+ me da el siguiente
error:
One or more files do not contain components or type
libraries. These files cannot be installed.

Alguna idea de lo que puede estár pasando.
.Net 1.1, Windows 2000 Sp4

Gracias de antemano,
Roberto G.A.

Preguntas similare

Leer las respuestas

#1 A.Poblacion
21/04/2004 - 13:32 | Informe spam
Aparentemente lo estás haciendo bien. La única diferencia que veo es que yo
nunca hago el paso 6 (Register for COM Interop), sino que dejo que el tlb se
me genere automáticamente al hacer el REGSVCS de mi assembly.

Ojo, si lo registras para COM Interop y lo añades a COM+ directamente desde
la herramienta administratva de Component Services, se cree que es un objeto
COM e intenta registrarlo directamente como tal, cosa que no funciona con
las clases hechas en .Net. En lugar de eso, regístralo con REGSVCS.



"Roberto G.A." wrote in message
news:214401c42791$ba2bcb70$
Hola a ,
Estoy intentando crear un componente COM+ en C# pero en el
mismo instante que lo registro en COM+ me da un error,
detallo cuales son los pasos que sigo por si alguien me
puede ayudar.

1.- Creo un nuevo proyecto

2.- Le añado la referencia System:EnterpriseServices y
añado la declaración using de la misma referencia.

3.- Heredo de la clase ServicedComponent.

4.- Añado las etiquetas siguientes al ensamblado:
[assembly: ApplicationName("MiCOMApp")]
[assembly: ApplicationActivation(ActivationOption.Server)]

5.- Añado al ensamblado un "strong name"

6.- Configuro adecuadamente el proyecto para que genere
la "tlb"
Register for COM Interop = True

7.- Añado el ensamblado al GAC

Pero al añadir el componente a COM+ me da el siguiente
error:
One or more files do not contain components or type
libraries. These files cannot be installed.

Alguna idea de lo que puede estár pasando.
.Net 1.1, Windows 2000 Sp4

Gracias de antemano,
Roberto G.A.
Respuesta Responder a este mensaje
#2 José Miguel Torres
21/04/2004 - 13:48 | Informe spam
Efectivamente, tratas de desarrollar un componente .NET para una aplicación
COM+ y alfinal tratas dicho componente como COM. El paso 6 debes hacerlo si
quieres interoperar con COM, si es así entonces no utilices Enterprise
Services; sino, compilando la aplicación se registrará en el servicio de
componentes de tu SO, osea hasta el paso 5.

Saludos


José Miguel Torres
jtorres_diaz~~ARROBA~~terra.es


"Roberto G.A." escribió en el mensaje
news:214401c42791$ba2bcb70$
Hola a ,
Estoy intentando crear un componente COM+ en C# pero en el
mismo instante que lo registro en COM+ me da un error,
detallo cuales son los pasos que sigo por si alguien me
puede ayudar.

1.- Creo un nuevo proyecto

2.- Le añado la referencia System:EnterpriseServices y
añado la declaración using de la misma referencia.

3.- Heredo de la clase ServicedComponent.

4.- Añado las etiquetas siguientes al ensamblado:
[assembly: ApplicationName("MiCOMApp")]
[assembly: ApplicationActivation(ActivationOption.Server)]

5.- Añado al ensamblado un "strong name"

6.- Configuro adecuadamente el proyecto para que genere
la "tlb"
Register for COM Interop = True

7.- Añado el ensamblado al GAC

Pero al añadir el componente a COM+ me da el siguiente
error:
One or more files do not contain components or type
libraries. These files cannot be installed.

Alguna idea de lo que puede estár pasando.
.Net 1.1, Windows 2000 Sp4

Gracias de antemano,
Roberto G.A.
Respuesta Responder a este mensaje
#3 Anonimo
21/04/2004 - 14:56 | Informe spam
Un aporte de código sería interesante

Hola a ,
Estoy intentando crear un componente COM+ en C# pero en


el
mismo instante que lo registro en COM+ me da un error,
detallo cuales son los pasos que sigo por si alguien me
puede ayudar.

1.- Creo un nuevo proyecto

2.- Le añado la referencia System:EnterpriseServices y
añado la declaración using de la misma referencia.

3.- Heredo de la clase ServicedComponent.

4.- Añado las etiquetas siguientes al ensamblado:
[assembly: ApplicationName("MiCOMApp")]
[assembly: ApplicationActivation


(ActivationOption.Server)]

5.- Añado al ensamblado un "strong name"

6.- Configuro adecuadamente el proyecto para que genere
la "tlb"
Register for COM Interop = True

7.- Añado el ensamblado al GAC

Pero al añadir el componente a COM+ me da el siguiente
error:
One or more files do not contain components or type
libraries. These files cannot be installed.

Alguna idea de lo que puede estár pasando.
..Net 1.1, Windows 2000 Sp4

Gracias de antemano,
Roberto G.A.
.

Respuesta Responder a este mensaje
#4 Roberto G.A.
21/04/2004 - 15:48 | Informe spam
He eliminado el paso 6, tal como me indicaron:
Register for COM Interop = False

pero al añadir manualmente el ensamblado desde la consola
de COM+ me sigue dando el mismo error.

la única manera de registrar dicho componente en com+ es:
regsvcs /fc Class1.dll





pero ocurren dos cosas curiosillas:
1.- El método no aparece en la consola COM+
2.- Al invocar el componente con un programita de pruebas
en la consola de COM+ no aparecen los atributos: Objects,
Activated, In Call, Call Time...

Adjunto el código fuente por si puede revelar algo:

Datos del ensamblado añadidos para COM+>>
-
using System.EnterpriseServices;

[assembly: ApplicationName("COMClass")]
[assembly: ApplicationActivation(ActivationOption.Server)]

Código>>
-
using System;
using System.EnterpriseServices;

namespace Class1
{
public class Class1 : ServicedComponent
{
public Class1()
{
}

public string GetName()
{
try
{

return "Roberto";
}
catch(Exception e)
{
throw(e);
}
}
}
}


Gracias a todos por las respuestas :-) sigo peleandome con
ello
Roberto G.A.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida