_BIND_TO_CURRENT_VCLIBS_VERSION устанавливает текущую версию в манифесте - или версию RTM, если нет.
И установка его в манифесте - верный способ сделать это.
Однако вы видите эффекты файла политики сборки: - Когда установлен пакет VCRedist, содержащий среду выполнения 2008 SP1, он устанавливает файл политики в хранилище WinSxS с записью bindingRedirect, которая перенаправляет попытки загрузить RTM время выполнения до среды выполнения SP1.
Таким образом, приложения, которые указывают время выполнения RTM в своем манифесте, будут загружать среду выполнения SP1, а приложения, которые определяют среду выполнения SP1, будут загружать среду выполнения SP1.
Если вы действительно хотите использовать среду выполнения RTM, даже если установлены среда выполнения SP1 и файлы политики, вам необходимо указать версию RTM в манифесте и использовать файл конфигурации приложения. В основном «yourappname.exe.config» (или «yourdllname.dll.2.config», если его dll знает, что вызывает горе).
Файлы конфигурации приложения могут содержать элемент bindingRedirect, который переопределяет любую версию сборки, указанную в манифесте, или файлы политики.
Этот конфигурационный файл сообщит ОС о загрузке среды выполнения RTM, даже если установлена среда выполнения SP1: -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="9.0.30729.1" newVersion="9.0.21022.8"/>
</dependentAssembly>
</assemblyBinding>
</windows>
</configuration>
Примечание: oldVersion может быть диапазоном: oldVersion="9.0.30729.1-9.1.0.0"
См .: Файлы конфигурации приложения , документированные в MSDN.