Как развернуть Visual C ++ Runtime 2010 в библиотеке bin веб-приложения? - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь развернуть веб-проект, который использует определенную библиотеку (в данном случае Chilkat) на веб-хосте (appharbor.com).Проблема в том, что библиотеке требуется среда выполнения Visual Studio C ++ 2010 (http://www.cknotes.com/?p=311). Мой вопрос: как правильно развернуть эту среду выполнения?

1. Выбор метода развертывания

На моей локальной машине разработки установлена ​​среда выполнения, но у меня есть только git push доступ к среде хостинга.

На основе MSDN существует три варианта развертывания среды выполнения:

  1. Использовать распространяемый пакет (рекомендуется)
  2. Использовать модули слияния (требуются права администратора)
  3. Развертывание с приложением

Вариант 3 - единственныйодин я могу сделать с этим хостом, так как у меня нет административного доступа к серверу.

2. Определение того, какие библиотеки должны быть развернуты

Страница MSDN гласит, чтоDLL-файлы должны находиться в «Program Files \ Microsoft Visual Studio 10.0 \ VC \ Redist». В моем случае каталог Redist в этом месте не существует (работает на 64-битной основе, поэтому я проверил оба «Program Files» иd "Program Files (x86)").

Я распаковал распространяемый пакет и файл vs_red.cab внутри, чтобы найти список содержащихся в них dll: - atl100 - mfc100 (+ языковые варианты) - mfc100u -msvcp100 - msvcr100 - vcomp100 - msdia71

В то же время я проверил библиотеку в отражателе, чтобы увидеть, что ссылается: - Microsoft.VisualC (.net) - KERNEL32.dll (собственный) - MSVCR100.dll (родной) - ... и одна загадочная библиотека без имени.Отображается как модуль с пустым текстом.

Примечание: используемая здесь библиотека chilkat доступна в версиях x64 и x86.Я выполнил эти задачи с x86 только потому, что целевой системой кажется x86.(Развертывание x64 приводит к ошибке «Была предпринята попытка загрузить программу с неверным форматом.».)

3.Поиск библиотек для развертывания

Библиотеки в разархивированном vc_red.cab, где указано неправильное имя, поэтому я решил найти библиотеки на жестком диске.Поиск atl100 обнаружил три местоположения: system32, syswow64 и как часть каталога приложения.

Все файлы, упомянутые выше, были в system32, кроме: - msdia71 (native) - это связано с отладкой и не на моемДиск вообще, поэтому я предполагаю, что он не нужен.- Microsoft.VisualC (.net) - обнаружил это в GAC в правильной версии (10.x).

(я не копировал KERNEL32.dll, потому что это встроенная библиотека Windows.)

4.Добавление библиотек в проект

Библиотека VisualC .net была добавлена ​​в качестве ссылки.Собственные библиотеки были добавлены в корень моего веб-приложения, а свойства настроены на «Build Action: Content» и «Copy to Output: Always».После сборки библиотеки dll появились рядом с библиотеками .net в папке bin, как и ожидалось.

Но при развертывании и запуске я получаю сообщение об ошибке: «Не удалось загрузить файл или сборку» или одну из ее зависимостей.Указанный модуль не может быть найден.

Здесь вы можете увидеть выходные данные сборки проекта , и я могу заметить, что dll, который я считаю нужным, копируется в выходной каталог, новсе еще есть ошибка где-то.У кого-нибудь есть идея?Или лучший подход к отладке этого?Или я что-то глупо делаю :)?

1 Ответ

0 голосов
/ 15 июля 2011

Некоторые варианты, которые я вижу:

  • обратитесь в службу поддержки хостера для установки VC ++ на сервер
  • обратитесь в службу поддержки Chilkat
  • развернуть на локальном сервере и включить Fusion (http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.80).aspx)
...