Мы переносим проект VС++ из Visual Studio 2003 в Visual Studio 2008 SP1 (9.0.30729.4148). Зависимые внешние библиотеки также скомпилированный с помощью Visual Studio 2008 SP1.
MainApp - Main application Compiled with VS SP1 9.0.30729.4148
ExtStaticLib1 - External static library compiled with VS SP1 9.0.30729.4148
ExtDynamicDll1 - External DLL compiled with VS SP1 9.0.30729.4148
Существует два сценария развертывания для основного приложения:
- Машина с правами администратора пользователя: Мы рекомендовали поставить предварительный запрос на установку распространяемого пакета Visual Studio перед использованием приложения MainApp. Это хорошо работает, поскольку пользователь имеет права администратора и установка распространяемого пакета не имеет проблем. Связывание приложений с виртуальными DLL файлами VC в папках WinSxS автоматически.
- Машина с пользователем без администратора: Этот сценарий проблематичен. Пользователь не имеет прав администратора. Следовательно, установить VS2008SP1 пакет перераспределяемого пакета невозможно.
Мы делаем следующее, чтобы решить эту проблему:
-
Скомпилируйте объекты MainApp с помощью макроса _BIND_TO_CURRENT_OPENMP_VERSION (для всех проектов в MainApp).
-
Распространяйте распространяемые DLL-библиотеки VS2008SP1 как частные сборки и скопируйте их в каталог установки приложения.
Вопросы:
- Есть ли какой-либо побочный эффект использования флага _BIND_TO_CURRENT_VCLIBS_VERSION (Специально, когда совместно распространяются пакеты VC и частные сборки VC-переименования)?
- У нас нет большого контроля над внешними библиотеками ExtStaticLib1, ExtDynamicDll1 и, следовательно, они не будут скомпилированы с макросом _BIND_TO_CURRENT_OPENMP_VERSION. Но они уже скомпилированы с VSSp1. Будут ли какие-либо проблемы с этой настройкой?
- Будет ли какая-либо проблема, если доступна новая версия распространяемого VS (новее, чем 9.0.30729.4248).
Спасибо.