Я пытаюсь развернуть веб-проект, который использует определенную библиотеку (в данном случае Chilkat) на веб-хосте (appharbor.com).Проблема в том, что библиотеке требуется среда выполнения Visual Studio C ++ 2010 (http://www.cknotes.com/?p=311). Мой вопрос: как правильно развернуть эту среду выполнения?
1. Выбор метода развертывания
На моей локальной машине разработки установлена среда выполнения, но у меня есть только git push доступ к среде хостинга.
На основе MSDN существует три варианта развертывания среды выполнения:
- Использовать распространяемый пакет (рекомендуется)
- Использовать модули слияния (требуются права администратора)
- Развертывание с приложением
Вариант 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, который я считаю нужным, копируется в выходной каталог, новсе еще есть ошибка где-то.У кого-нибудь есть идея?Или лучший подход к отладке этого?Или я что-то глупо делаю :)?