Ich habe versucht, eine registrierungsfreie .NET-basierte COM-DLL zu erhalten, aber ohne Erfolg.Konfigurieren von .NET-basierten Komponenten für die registrierungsfreie Aktivierung
- In Visual Studio 2008 habe ich eine neue C# -Klassenbibliothek hinzugefügt.
- Ich habe die Optionen 'make assembly COM-visible' und 'register for COM interop' aktiviert.
- Ich habe eine öffentliche Schnittstelle und Klasse mit einigen Funktionen hinzugefügt.
- Ich habe eine offensichtliche Abhängigkeit zu meinem C++ Client-Anwendung: #pragma comment (Linker "/ manifestdependency ...
Aber wenn ich meine Anwendung starten erhalte ich‚die Anwendung konnte nicht, weil die Anwendung starten Konfiguration ist falsch '.
Ich habe Microsoft mt-Tool verwendet, um die Manifestdateien der C++ - Clientanwendung und der C# COM-DLL zu extrahieren, und die Informationen in beiden sind identisch (die dependentAssembly in der C++ - Manifestdatei enthält die Derselbe Name und dieselbe Version wie die AssemblyIdentity in der COM-Manifestdatei)
Ich habe auch den auf http://msdn.microsoft.com/en-us/library/eew13bza.aspx beschriebenen Ansatz versucht, aber mit ähnlichen Ergebnissen.
Ähnlich habe ich versucht, einen Verweis auf mein COM-Projekt in "Framework und Referenzen" meiner C++ - Client-Anwendung hinzuzufügen. Die Informationen auf dieser Eigenschaftsseite sahen vielversprechend aus (sie zeigen Optionen wie 'Kopie lokal', 'Abhängigkeiten kopieren' usw. und Eigenschaften wie 'assemblyIdentity'), aber Visual Studio kopiert weder die DLLs noch fügt sie automatisch eine Abhängigkeit zur Manifestdatei hinzu.
Beachten Sie, dass die 'registrierte Variante' funktioniert.
Wer hat irgendwelche Ideen von dem, was ich falsch mache?
Update:
- Wenn ich eine einfache C++ DLL erstellen und ein Manifest mit dem gleichen Namen und Version meines .NET COM-DLL (gleiche assembly) meine Anwendung einbetten startet in Ordnung. Das Problem liegt also in der Manifestdatei meiner .NET COM DLL.
- Ich kann das Manifest erfolgreich aus der DLL mit
mt -managedassemblyname:...
extrahieren und dann das gleiche Manifest mitmt -outputresource:...
einbetten, aber das führt auch nicht dazu, dass Windows die Abhängigkeit erfolgreich auflösen kann.
Große Lösung! Dies vereinfacht den Installationsprozess erheblich. Danke vielmals! –
Hallo, Ich habe eine C++ - Assembly, die eine Co-Erstellung einer Managed COM-Assembly durchführt, und ich brauche einen ähnlichen Mechanismus. Ich möchte die bestehende .Net-Implementierung umgehen und möchte sie in meine neue Implementierung einbeziehen. Die C++ - Assembly wiederum wird über eine .Net-Exe geladen. Also, wie sollte das Manifest für die C++ Seite entworfen werden? –