2016-07-13 11 views
0

Недавно мы преобразовали большой пакет проектов на базе MFC из Visual Studio 2005/2008 в Visual Studio 2012 (обновление 5). В наших проектах ранее использовался набор файлов манифеста конфигурации, встроенных в качестве ресурсов, для указания точной версии сборок сбоку (SxS) для загрузки. В качестве примера, ниже здесь отрывок из одного из наших старых файлов манифеста для VC90 выполнения:Задание правильной работы VS 2012 VC/MFC с использованием файлов манифеста в Visual Studio

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 

Раньше я мог связать личность выше папки в C: \ Windows \ WinSxS. Примером может служить папка «x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_e163563597edeada», которая содержит правильные двоичные файлы.

Как вы можете видеть, имя папки содержит всю информацию, необходимую для заполнения атрибутов узла assemblyIdentity. К сожалению, статья this (устаревшая) подтверждает мои выводы о том, что Microsoft больше не хранит файлы VC2010 + SxS таким образом. Я хочу сказать, что наши проекты работают с последними версиями Microsoft Visual C++ 2012 Redistributable (установщик v11.0.61030.0). Как найти правильную информацию имени/версии/publicKeyToken для этих двоичных файлов? Я не мог найти список MSDN или подобное.

Обратите внимание, что я использовал sxstrace.exe/Dependency Walker и т.п., чтобы исследовать эту проблему. Я могу подтвердить, что файлы манифеста соответствующим образом встроены в наши исполняемые файлы; проблема в том, что файлы манифеста указаны неверно.

Заранее благодарен!

ответ

0

Посмотрите на this. Как я правильно помню, ваше приложение будет связано с libs, как в вашем SDK Windows. И чтобы проект использовал библиотеки по умолчанию, просто удаляйте информацию о них внутри вашего файла проекта или обновляйте проект с настройками по умолчанию.