У меня есть исполняемый файл, который в манифесте говорит, что это зависит от
Microsoft.VC90.CRT 9.0.21022.8
Microsoft.VC90.CRT 9.0.30729.1
В Windows 7 этот исполняемый файл работает без проблем.
В Windows Server 2008 R2 этот исполняемый файл не запускается с сообщением:
Не удалось запустить приложение, поскольку его параллельная конфигурация неверна. Пожалуйста, смотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для более подробной информации.
Это было неожиданно - я думал, что Windows 7 и Windows Server 2008 R2 должны быть очень похожи в отношении доступности во время выполнения. Обе машины довольно чистые. Машина с Windows 7 - это новая установка, на которой ничего нет. На компьютере с Windows Server 2008 R2 есть только некоторые обновления из Центра обновления Windows.
Я проверил каталог WinSxS на Windows 7 и обнаружил
Microsoft VC90.CRT 9.0.30729.4926
Я проверил каталог WinSxS на компьютере под управлением Windows Server 2008 R2 и обнаружил
Microsoft VC90.CRT 9.0.30729.4926
Имеющаяся среда выполнения новее, чем указано в манифесте, и, тем не менее, система Windows Server 2008 R2 не может перенаправить на более новую среду выполнения. Запуск sxstrace в Windows Server 2008 R2 показывает:
INFO: Applying Binding Policy
INFO: No publisher policy found.
INFO: No binding policy redirect found.
Запуск sxstrace в Windows 7 дает:
INFO: Applying Binding Policy
INFO: Find publisher policy at C:\Windows\WinSxS\manifest\amd64...
INFO: Publisher Policy redirected assembly version.
INFO: Post policy assembly identity is...
Есть какие-нибудь идеи, как это можно решить, кроме установки среды выполнения VS 2008 и среды выполнения SP 2008 SP1? Я думал, что вся идея сборок заключается в том, что она позволяет системе переопределять старые среды выполнения и заменять более новые.