2009-03-24 15 views
0

Ich versuchte herauszufinden, warum ein Debug-Build mit dem Ereignisfehler "abhängigen Assembly microsoft.vc80.debugcrt konnte nicht gefunden werden" in die Luft gesprengt wurde.Visual Studio 2005 - C++ - Was steuert die Manifest-Erstellung

Nach dem Löschen alles (alles nicht. CPP oder. H) und die Lösung neu erstellen - ich hatte immer noch das Problem.

Eine Google-Suche war fruchtlos und eine Neuinstallation von VS führte zu keiner Änderung.

Ich hatte die DLLs in C: \ WINDOWS \ WinSxS \ x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c.

ich die \ debug \ .exe.intermediate.manifest Datei geöffnet und es hatte 2 (dependentAssembly) Einträge:
1.: name = 'Microsoft.VC80.DebugCRT' version = '8.0.50608.0'
2. Platz: name = 'Microsoft.VC80.DebugCRT' version = '8.0.50727.762'

Wenn ich einen löschen und den anderen zu Namen ändern = 'Microsoft.VC80.DebugCRT' version = '8.0.50727.42'

Ich kann einen Build bekommen, der startet.

Zugegeben, ich habe VS2008 installiert - aber was steuert die Versionen? oder Wie bekomme ich die richtige Debug-DLL-Version zu "kleben".

VS2008 wurde über das Bedienfeld deinstalliert.

EDIT: Gefunden in der Registrierung nichts, wenn DebugCRT gesucht wird.
Der Umgebungspfad verweist auf die VS8-Ordner.
Es gibt nur 1 DebugCRT Ordner im Verzeichnis c: \ windows \ winsxs \ policies Ordner
(8.0.50.727.42)
Die c: \ windows \ winsxs \ manifestiert nur Ordner mit der .42 Version von .cat hat und manifest
die manifest-Datei (im obigen Manifest Ordnern) hat version = „8.0.50727.42“

Klarstellung: die Manifest-Datei hat 2 „dependentAssembly“ Einträge mit jeweils unterschiedlichen Versionen und nicht die .42. Ich kann 1 Eintrag löschen und die Version auf der anderen ändern, um mit dem .42 übereinzustimmen, um einen Debug-Build zu erhalten, der startet.

EDIT2: Ich bin auch mit Boost- und in den DLLs gibt es die 0,762 Version

Antwort

1

Die Version wurde von den Boost DLLs übernommen, die eine vorkompilierte Download-Version von Boost waren. Sobald die Bibliotheken neu kompiliert (und erneut installiert) wurden, erzeugte ein Re-Build der Lösung ein Manifest mit einer einzigen Version und das Programm wurde verknüpft und ausgeführt.

So - Überprüfen Sie die Bibliotheken und DLLs, die für die verwendete Version in die Lösung importiert werden.

0

VS 2008 VC90 nicht VC80 ist, so dass nicht ein Teil des Problems ist. Die Beziehung zwischen der mit dem Manifest angeforderten Assembly und der SxS-geladenen Assignbly befindet sich in C: \ WINDOWS \ WinSxS \ Policies. IIRC, "8.0.50608.0" wird von VS2005 vor SP1 generiert. Es ist falsch und hätte 8.0.50727.42 sein sollen, aber dies wird von der Richtlinie erfasst.

Ich bin nicht sicher, wie Sie zwei Manifeste bekommen. Was sind deine Manifesteinstellungen?

0

Ich würde vorschlagen, Boost in Ihrer speziellen Umgebung neu zu erstellen.Außerdem könnten Sie die Side-by-Side-Assemblies ganz weglassen, indem Sie den CRT statisch verbinden ...

+0

Yep - Ich habe das gemacht, aber wurde von MFC gebissen, weil ich nicht verlinken wollte. Ich suche, die MFC-Druckerklassen zu ersetzen und MFC vollständig zu entleeren. – jim

Verwandte Themen