Ich arbeite mit VS2010 an einem Projekt, das Havok verwendet, und die neueste Version hat nur VS2008 und frühere Binärdateien. Das eingebettete Manifest, das von VS generiert wird, enthält das folgende
%Vor%Da VS anscheinend seit 2010 keine Side-by-Side-Assemblys ( Quelle ) mehr verwendet, In meinem Winsxs-Verzeichnis sind die Debug-CRT-Assemblys nicht installiert, und das Vs-Redistributable-Paket installiert die Debug-Versionen nicht. Wenn wir die DLLs kompilieren, die Havok mit einem eingebetteten Manifest verwenden, können Anwendungen, die die DLLs laden, nicht gestartet werden.
Ich habe sxstrace ausgeführt und folgendes bekommen:
%Vor%Die Anwendungen funktionieren auf einem meiner Mitarbeiter, da (vermutlich) er VS2008 installiert hat, aber nicht auf einem anderen Mitarbeiter oder bei mir, da wir nur VS2010 installiert haben. Die einzigen Debugcrt-Dateien, die die Arbeitsmaschine im Verzeichnis winsxs hat, sind
%Vor%als Ordner mit den DLLs, einer .manifest-Datei und einer .cat-Datei (dieselbe publicKeyToken, aber andere Version)
Ich habe versucht, die Dateien in mein Verzeichnis winsxs zu kopieren, wodurch das Problem nicht behoben werden konnte. Das direkte Platzieren der DLLs in dem Verzeichnis mit den Binärdateien hat ebenfalls nichts bewirkt. Das Platzieren der Dateien in bin\Microsoft.VC90.DebugCRT.DLL
(da dies eines der Verzeichnisse war, die nach sxstrace durchsucht wurden) konnte ebenfalls nicht helfen, aber die Ausgabe von sxstrace wurde in
(es stoppt die Suche und kann die Referenz auflösen, aber die Kontextgenerierung schlägt immer noch fehl)
Das einzige, was funktioniert, ist das Deaktivieren der Embedded-Manifest-Generierung. Gibt es eine andere Möglichkeit, dies zu lösen?
Suchen Sie auf dem Arbeitscomputer im Ordner:
C: \ Programme (x86) \ Microsoft Visual Studio 9.0 \ VC \ redist \ DebugNonRedist \ x86 \ Microsoft.VC90.DebugCRT
Hier befinden sich die Runtime-DLLs der Version, die zum Ausführen benötigt wird. Dort befindet sich auch eine Manifest-Datei. Sie können in der Ereignisanzeige (eventvwr.exe) nachsehen, welche Version der DLLs die EXE sucht, und dann können Sie die Manifestdatei ändern (statt dessen eine Kopie zu modifizieren, die Sie mit den dlls im ausführbaren Verzeichnis ablegen) Damit werden die enthaltenen Dateien als diese Version identifiziert.
Tags und Links visual-c++ manifest side-by-side