2010-03-04 18 views
18

Pregunta: Tengo un DLL .NET que utilizo de un programa C++. Ahora tengo que registrar el dll mediante programación en una computadora de implementación.Registre un dll COM de C#/VB.NET programáticamente

¿Cómo hago eso (programáticamente, no uso regasm)? Recuerdo, cuando una vez llamé a un dll de VB6 desde un dll de C++, tuve que usar DllRegisterServer y DllUnregisterServer.

¿Todavía es así con una .NET dll?
Parece que de alguna manera debo agregar la función dllregisterserver a .NET dll.

Respuesta

28

puaj, DLL .NET no tiene DllRegisterServer, por lo que tiene que escribir un instalador .NET, la ejecución de esta parte:

Assembly asm = Assembly.LoadFile (@"c:\temp\ImageConverter.dll"); 
RegistrationServices regAsm = new RegistrationServices(); 
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase); 
+0

AFAIK necesita derechos de administrador. No es una gran diferencia llamar 'regasm' directamente. Pero funciona. +1 –

+2

@Arnaud Bouchez: Una gran diferencia: puede intentarlo, detectarlo y manejar los errores. Al igual que con el engendramiento de un nuevo proceso, también es posible, pero mucho más trabajo. –

1

¿Puede utilizar process monitor para ver qué cambios de sistema (básicamente cambios de registro creo) se realizan cuando usa regasm.exe para registrar su dll, y luego realiza esos cambios programáticamente?

+0

Sí, ese es el camino a seguir con C pura/C++. Bien, pero creo que puede tomar tiempo averiguar cómo hacer que los datos se escriban allí ... –

Cuestiones relacionadas