2010-03-27 26 views
5

He escrito un servicio de Windows en .Net y quiero exponer las clases a las que llamará otro código .Net. Específicamente, tengo una API que quiero exponer a través de una DLL que se colocará en el GAC, y quiero que la DLL en el GAC use las clases del Servicio .Net de Windows. Necesito esta arquitectura ya que el código en el Servicio de Windows debe ejecutarse como un usuario/cuenta diferente como el que llama de la API (la cuenta se crearía en el momento de la instalación).Exposición de un servicio .Net

Mi plan era exponer las clases de servicio de Windows a través de COM (regasm.exe para registrar y tlbexp.exe para crear la biblioteca de tipos), y luego llamar a las clases en la DLL de GAC mediante COM (importado a través de tlbimp.exe) . Sin embargo, me sale el siguiente error de tlbimp:

TlbImp: TI0000 error: System.Runtime.InteropServices.COMException - Tipo de biblioteca '' se exportó desde un conjunto de CLR y no puede ser re- importada como un conjunto de CLR.

Esto implica para mí que mi método no va a funcionar fácilmente. Solo puedo pensar que podría necesitar una DLL C++ como puente para que mi DLL GAC invoque las llamadas COM, pero esto parece una desagradable solución.

Básicamente estoy buscando sugerencias. ¿Alguien sabe cómo exponer las clases de un servicio de Windows escrito en .Net a otro código .Net?

Respuesta

0

me gustaría poner toda la lógica de servicio de Windows en un archivo DLL separado (egxdll) Defina una interfaz para sus clases en x.dll. Agregue referencia tanto en el servicio de Windows como en el otro proyecto .Net al proyecto de x.dll. De esta manera puede lograr la reutilización.

Cuestiones relacionadas