Развертывание и зависимости
Обновлен: Ноябрь 2007
Средства развертывания в Visual Studio автоматически определяют зависимости и добавляют их в проект развертывания всякий раз, когда в проект добавляется группа выходных данных проекта, сборка или модуль слияния. Однако существуют некоторые случаи, когда зависимости определить нельзя.
Совет. |
---|
Вместо того, чтобы добавлять сборки непосредственно в проект развертывания, лучше добавлять группу выходных данных проекта, содержащую сборку. Средства развертывания легче обнаруживают зависимости для группы выходных данных проекта. |
Для сборок обнаруживаются все зависимости с другими сборками. Однако если сборка ссылается на неуправляемый компонент (например, на модель COM, библиотеку DLL), никакие зависимости для этого компонента обнаружены не будут. Аналогично, файлы, добавленные в проект развертывания напрямую, могут иметь зависимости, которые не будут обнаружены. В любом случае зависимые файлы обычно требуются для запуска приложения, но их отсутствие не будет препятствовать запуску установщика.
Чтобы предотвратить эту проблему, необходимо сначала определить существующий тип зависимостей и предпринять соответствующее действие.
Может существовать ссылка на компонент, который может быть установлен как часть другого продукта — например, элемент управления веб-обозревателя (shdocvw.dll), который устанавливается как часть обозревателя Internet Explorer.
В этом случае необходимо исключить компонент из проекта развертывания и добавить условие запуска, которое проверит наличие компонента на компьютере, куда устанавливается приложение, и в случае отсутствия компонента прервет установку. Конечному пользователю придется установить программное обеспечение, которое содержит требуемый компонент, до установки приложения.
Может добавляться неуправляемый компонент, который не предоставляет другим приложениям все свои зависимости — например библиотека базовых классов Microsoft (Microsoft Foundation Classes, MFC), которая не включает в качестве зависимостей локализованные вспомогательные файлы.
В этом случае потребуется определить все возможные зависимости и включить их в проект развертывания. Чтобы получить список зависимостей, необходимо обратиться к документации компонента или связаться с его автором.
Примечание. Большинство инструментов проверки зависимостей, таких как Depends.exe, находят только зависимости с ранней привязкой; зависимости с поздней привязкой отображаются только во время выполнения.
Может существовать ссылка на сборку, которая зависима от неуправляемого компонента — например System.Data.dll, которая зависима от компонентов доступа к данным Microsoft (Microsoft Data Access Components, MDAC) версии 2.8. Дополнительные сведения см. в разделе Практическое руководство. Добавление условия запуска для компонентов доступа к данным MDAC.
Для уверенности, что все зависимые файлы будут установлены, можно добавить модуль слияния, содержащий компонент и его зависимости. Чтобы узнать, доступен ли модуль слияния, свяжитесь с автором компонента. Для большинства компонентов Microsoft модули слияния доступны на веб-узле корпорации Майкрософт.
Если модуль слияния отсутствует, можно добавить условие запуска, которое проверяет наличие компонента во время установки, и в случае отсутствия компонента прекращает установку.
См. также
Задачи
Практическое руководство. Исключение файлов из выходной группы проекта
Практическое руководство. Добавление условия запуска для компонентов доступа к данным MDAC