Quiero importar una biblioteca de tipos (tlb) en C#.Importar TLB en C#
¿Cómo importo un .tlb
en un archivo de código .cs
?
Borland Delphi puede importar un .tlb
en .pas
mediante el uso de la herramienta de línea de comandos tlibimp.exe
:
C:\Develop>tlibimp.exe SopQuotingEngineActiveX.tlb
Borland TLIBIMP Version 5.1 Copyright (c) 1997, 2000 Inprise Corporation
Type library loaded...
Created C:\Develop\SopQuotingEngineActiveX_TLB.dcr
Created C:\Develop\SopQuotingEngineActiveX_TLB.pas
y ahora hay un archivo de código .pas
fuente que contiene constantes, enumeraciones, interfaces que se encontraban dentro del compilado Tipo archivo de biblioteca (tlb):
SopQuotingEngineActiveX_TLB.pas:
unit SopQuotingEngineActiveX_TLB;
interface
...
const
CLASS_XSopQuotingEngine: TGUID = '{3A46FFB8-8092-4920-AEE4-0A1AAACF81A0}';
...
// *********************************************************************//
// Interface: IXSopQuotingEngine
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {AA3B73CC-8ED6-4261-AB68-E6AE154D7D52}
// *********************************************************************//
IXSopQuotingEngine = interface(IDispatch)
['{AA3B73CC-8ED6-4261-AB68-E6AE154D7D52}']
procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
procedure OnEndPage; safecall;
procedure Connect(const ConnectionString: WideString); safecall;
procedure Disconnect; safecall;
function xmlRateQuote(const xmlQuote: WideString): WideString; safecall;
end;
...
CoXSopQuotingEngine = class
class function Create: IXSopQuotingEngine;
end;
¿Cuál es el equivalente de .NET C# para importar una biblioteca de tipos al código C# nativo?
Nota: he intentado usar tlbimp.exe
que viene con el SDK de Windows, pero que importa una biblioteca de tipos en una DLL de ensamblado administrado:
C:\Develop>"c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\x64\tlbimp" SopQuotingEngineActiveX.tlb
Microsoft (R) .NET Framework Type Library to Assembly Converter 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.
TlbImp : warning TI3002 : Importing a type library into a platform agnostic assembly. This can cause errors if the type library is not truly platform agnostic.
TlbImp : Type library imported to SopQuotingEngineActiveX.dll
¿Cuál es el .NET C# equivalente para ¿importar una biblioteca de tipos al código C# nativo?
Nota: Lo que quiero ver es un archivo .cs
código con todas las interfaces necesarias, constantes, enumeraciones - todo lo necesario para llamar al objeto COM. Para ejemplos bien:
SopQuotingEngineActiveX.cs
[ComImport, Guid("AA3B73CC-8ED6-4261-AB68-E6AE154D7D52")
]
public interface IXSopQuotingEngine
{
void OnStartPage(object AScriptingContext);
void OnEndPage();
void Connect(string ConnectionString);
void Disconnect();
string xmlRateQuote(string xmlQuote);
}
[ComImport, Guid("3A46FFB8-8092-4920-AEE4-0A1AAACF81A0")]
public class XSopQuotingEngineClass
{
}
(excepto sin los fallos)
Véase también
- Convert Interface IDL file to C#
- How to read TLB(Type Libraries)of unmanaged code from C# ?
- .NET C#: Is it possible to import TLB (semi-)automatically and add PreserveSig to one type?
- Type Library Importer (Tlbimp.exe)
¿por qué no está teniendo el conjunto suficiente? Puedes hacer referencia a ella en tus proyectos, puedes reflexionar sobre ella si quieres ver lo que contiene. ¿Por qué necesitas el código fuente de C#? –
@Marius Bancila: solo binario. –
@IanBoyd ¿cómo se solucionó esto al final? He visto la respuesta a continuación, pero esto me hace muy infeliz ...: '[ – MoonKnight