Wie kann ich einen COM-Server in eine CLR-Assembly konvertieren, so dass ich zunächst nichts neu schreiben muss.Wie konvertiere ich eine COM-Assembly in eine CLR-Assembly?
Antwort
Ich habe dies hier für das OP gepostet, da sie es ursprünglich als Bearbeitung in Frage gestellt haben.
Statt einen COM-Server (geschrieben im Jahr 1992 mit C++/MFC) in .NET neu zu schreiben, habe ich beschlossen, es in eine CLR-Assembly zu konvertieren. Um eine COM-Assembly (add32.exe) zu erstellen und sie von einem .NET-Client zu verwenden, müssen wir einen aufrufbaren Wrapper erstellen. Führen Sie alle Tools mit der Visual Studio-Eingabeaufforderung (als Administrator) aus.
Schritt 1: COM Assembly mit einem starken Namen Zeichen
Schritt 2: Definitionen Konvertieren in einer COM-Typbibliothek in eine CLR-Assembly
Konvertieren Sie die Definitionen gefunden in einer COM-Typbibliothek in einer CLR-Assembly mithilfe des Tools Tlbimp.exe gefunden. Die Ausgabe von Tlbimp.exe ist eine Binärdatei (eine Assembly), die Laufzeitmetadaten für die Typen enthält, die in der ursprünglichen Typenbibliothek definiert sind. Die Ausgabe ist eine DLL-Datei. Ich gebe einen Namespace an, damit wir die Metadaten problemlos in den .Net-COM-Client einbinden können.
Schritt 3: Mit Ildasm.exe die Baugruppe anzuzeigen.
die CLR-Assembly zu verwenden, uns eine Referenz für die es in der Lösung zu schaffen. Suchen Sie nach der DLL-Datei und fügen Sie sie als Referenz hinzu.
Clients, die COM-Objekte verwenden sollten Metadaten importieren den Namespace in Schritt 2.
#using "Add32Pkg";
Dann erstellt unter Verwendung der COM-Funktionalität zu nutzen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Add32Pkg;
namespace TestAdd32
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Add32Server Add32 = new Add32Server();
Add32.Init(201);
}
}
}
- 1. Wie konvertiere ich NaN in eine 0?
- 2. Wie konvertiere ich Benutzereingaben in eine Liste?
- 3. Wie konvertiere ich eine Zeichenfolge wie "Red" in eine System.Windows.Media.Color?
- 4. Wie konvertiere ich eine Zeichenfolge in eine Liste in Io?
- 5. Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in JSonne?
- 6. Wie konvertiere ich eine lange in eine Zeichenfolge in C++?
- 7. Coffeescript: Wie konvertiere ich eine Zeichenfolge in eine Zahl?
- 8. Wie konvertiere ich eine Enumerationsreferenz in eine Zahl?
- 9. Wie konvertiere ich eine basicHttpBinding in eine customBinding
- 10. Wie konvertiere ich eine Menge von Polygonen in eine Bitmap?
- 11. Wie konvertiere ich eine Go-Methode in eine Funktion?
- 12. Wie konvertiere ich eine Zeichenkette in eine Zeichenkette wchar_t?
- 13. Wie konvertiere ich eine UIColor in eine hexadezimale Zeichenfolge?
- 14. Wie konvertiere ich eine Base64-Zeichenfolge?
- 15. Wie konvertiere ich eine PCRE zu EBNF?
- 16. Wie konvertiere ich eine Zeichenfolge in C# in Byte?
- 17. Wie konvertiere ich eine Zeichenkette in JavasScript in Wirbelsäulenfall?
- 18. Wie konvertiere ich eine Zeichenfolge in UTF-8 in Android?
- 19. Wie konvertiere ich eine Dezimalzahl in REAL10 in MASM-Assembly?
- 20. Wie konvertiere ich eine Farbe in einen Pinsel in XAML?
- 21. Wie konvertiere ich. TXT-Datei in eine Liste in Python?
- 22. Wie konvertiere ich eine Zeichenfolge in Titel Fall in Android?
- 23. Python: Konvertiere eine Zeichenkette in eine Ganzzahl
- 24. Konvertiere eine Zahl in eine Zeichenkette
- 25. Wie konvertiere ich eine Referenz korrekt in einen Zeiger?
- 26. Wie konvertiere ich eine System :: String in ein unsigned char *?
- 27. Wie konvertiere ich diese ES6-Klasse in eine Factory-Funktion?
- 28. Wie konvertiere ich String-Zeichen in eine Liste?
- 29. Wie konvertiere ich ein einzelnes Zeichen in eine Zeichenfolge?
- 30. Rails: Wie konvertiere ich ein Symbol in eine Klasse
Ist das gemeint als eine (sehr gute, umfassende) Selbstantwort? Weil es auf jeden Fall eine Frage fehlt! – Widor
Es war meine Art, ein Dokument von dem zu liefern, was ich getan habe, um eine COM-Assembly in eine CLR-Assembly umzuwandeln. Ich wollte nur mit der Community teilen. –
Das ist gut (und ermutigt) - es ist nur '[bessere Etikette] (http://meta.stackexchange.com/questions/17463/can-ianswer-my-own-questions-even-those-where-i- wusste-die-antwort-vor-fragen-) um die Frage zu stellen, dass deine Info antwortet, dann beantworte deine eigene Frage. Dies ermöglicht zwei Dinge - andere können potentiell bessere Antworten hinzufügen und diejenigen, die nach einer Antwort suchen, können leichter suchen. – Widor