Ich erstelle ein NuGet-Paket in C++/CLI geschrieben. Es dient als Interop zwischen C# und nativem C++.NuGet Interop Pacakge Richtlinien rund um Debug und Release erstellt
Die erstellte DLL hat eine verwaltete Oberfläche und eine native Implib-Oberfläche.
Visual Studio verbraucht nur eine einzelne Referenzbaugruppe aus einem NuGet-Paket, keine andere Referenzbaugruppe pro Debug- oder Release-Konfiguration des empfangenden Projekts.
Ich möchte, dass die vom Assembly NuGet konsumierte Referenzbaugruppe je nach Konfiguration unterschiedlich ist, sodass ich sowohl eine Debug- als auch eine Release-DLL in nupkg einbetten kann und Release C# -Builds an die Release-DLL bindet und an Debug-C# -Builds bindet die Debug-DLL.
Dies ist eine Voraussetzung für mich, weil es scheint, dass das native Binärobjekt-Layout von std C++ - Klassen (zum Beispiel std :: string) sich zwischen meinen Debug und Release-Builds unterscheidet.
Die Release-Kompilierung der DLL funktioniert nicht mit der Debug-Kompilierung des Rests des Programms. Ich erhalte ähnliche Fehler mit den Debug-Kompilieren der DLL- und Release-Kompilierungen des Programms.
Kann ich hier etwas machen? Ich habe ein wenig untersucht, wie ich die Referenzelemente in die Dateien NuGet .props oder .targets setze und die Eigenschaft $ (Configuration) verwende, aber das habe ich noch nicht zum Laufen gebracht.
Kaum das einzige Problem, Sie erhalten genau die gleichen Probleme, wenn der Bibliotheksbenutzer eine andere VS-Version hat. Dies sollte * nie * ein Problem in einem C++/CLI-Projekt sein, Sie stellen nur die verwaltete Schnittstelle zur Verfügung. Wie Ihr C++ - Code aussieht, muss immer ein Implementierungsdetail sein, daher spielt es keine Rolle, dass Sie die Release-Build-Version bereitstellen. –