У меня проблема с несколькими библиотеками VC ++, которые я должен включить в мой проект .NET / C #. Одна библиотека VC ++ - это C ++ / CLI DLL, которую я использую в качестве открытого интерфейса из моего проекта .NET. Другие библиотеки написаны на родном C ++. У меня нет доступа к источнику библиотек VC ++, я просто должен их использовать.
Я создал тестовый проект .NET и ссылался на C ++ / CLI DLL. Нет проблем, компилятору повезло, отлично. Есть только одна проблема: когда я запускаю EXE-файл программы .NET, я получаю ошибки о библиотеках C ++ из-за отсутствия основных библиотек VC ++.
sxstrace показывает следующее (сокращенно):
INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference: Microsoft.VC80.OpenMP,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
...
ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
Теперь я не дурак и попробовал несколько вещей. Я много читал о WinSxS, чтобы глубже понять, что происходит.
Теперь я нахожусь в точке, где это становится утомленным для меня. Система, в которой я хочу выполнить программу, имеет распространяемый пакет VC ++ в текущей версии 8.0.50727.762 (SP1). Я знаю, что есть файл политики для Microsoft.VC80.CRT в winsxs, который перенаправляет все версии этой сборки на текущую версию 8.0.50727.762 (это решение проблемы на http://blogs.msdn.com/b/nikolad/archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx).
Но, как говорится в приведенной выше ошибке, этот файл политики не работает или не принимается во внимание. Система просто хочет найти версию сборки 8.0.50727.6195.
Теперь это первый вопрос: в чем здесь проблема? После того, как я понял это, я смог решить начальную проблему ...