Ich habe eine C++ - Assembly von Drittanbietern, die ich in meinem C# -Projekt verwenden muss. Daher habe ich einen C++/CLI-Wrapper für die C++ Assembly geschrieben. Alles kompiliert und läuft gut auf meiner Entwicklungsmaschine.Wie führe ich ein Projekt mit einer C++/CLI-Assembly auf einem anderen Computer aus?
Aber wenn ich den Inhalt meines bin
Verzeichnisses auf eine unserer anderen Maschinen kopiere, stürzt es ab. Der Grund ist, dass es meine C++/CLI-Wrapper Assembly nicht laden kann. Es gibt die typische Nachricht: FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.
So habe ich einige Untersuchungen haben: Ich stellte sicher, dass MyWrapperAssembly nicht gefunden werden konnte, und fügte hinzu, einen Event-Handler zum assembly resolve event. Innerhalb dieses Handlers habe ich MyWrapperAssembly for reflection only geladen. Ich habe dann alle referenced assemblies geladen. Die Reflection Only-Funktion von MyWrapperAssembly funktioniert. Ich bin mir sicher, dass die Datei gefunden wurde. Aber wenn ich versuche, es zu laden
Assembly.LoadFrom("hiddenDirectory\MyWrapperAssembly.dll");
Es stürzt mit dem oben genannten Fehler FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.
Da die Reflexion nur Last gearbeitet, ich sicher war, dass es etwas falsch in der C++ Schicht sein muss. Ich habe die installierten Versionen von C++ Redistributable auf meinem Entwicklungscomputer und auf der Testmaschine verglichen und festgestellt, dass einige Pakete fehlen. Also habe ich heruntergeladen und installiert diese Pakete auf der Testmaschine:
- Microsoft Visual C++ 2010 Redistributable Package (x86)
- Microsoft Visual C++ 2010 Redistributable Package (x64)
Und es hat nicht funktioniert. Dann habe ich 6 verschiedene PCs getestet. Mein Programm läuft auf 3 PCs und stürzt auf dem anderen 3 ab. Das einzige, was die PCs unterscheidet, ist die Microsoft Visual C++ 2010 Runtime
. Wenn es installiert ist, scheint es zu funktionieren.
Aber ich kann kein Installationsprogramm für dieses Paket im Internet finden. Also habe ich Visual Studio 2013 auf einem PC installiert, auf dem mein Programm abgestürzt ist. Nachdem ich Visual Studio (und damit die C++ Runtime) installiert habe, wird mein Programm ausgeführt.
Also ich nehme an, dass ich diese C++ Laufzeit brauche. Es ist keine Option, Visual Studio auf dem PC unseres Kunden zu benötigen. Also muss ich die C++ - Laufzeit bereitstellen. Aber die Frage ist:
Woher bekomme ich die Visual C++ Runtime?
Oder weiß jemand, wenn ich eine andere Sache vermisse?
Sie müssen wahrscheinlich die .NET Framework/Laufzeiten installiert – OMGtechy
Überprüfen Sie auch, dass Ihr C++ - Code im Freigabemodus kompiliert wird. Ich hatte Probleme, natives C++ auszuführen, das in Debug auf Zielcomputern kompiliert wird, da verschiedene VC-Laufzeitbibliotheken vorhanden sind – MDK
@OMGtechy: das .NET-Framework ist installiert. –