В моем текущем проекте есть зависимости от COM-компонентов, которые используют side by side manifests. Манифеста при условии, мне содержит file
элементы без каких-либо comClass
суб-элементов, как например .:Имеет ли смысл иметь пустой элемент файла в файле манифеста SxS
<file name="fred.dll">
</file>
Есть ли в этом смысл, или может это быть удалены безопасно? В некотором дополнительном контексте манифесты генерировались автоматически в прошлом. И указанные пустые записи, предположительно, вызвали проблемы в переданном, мне объяснили, что происходят странные вещи, если процесс зависит от двух разных компонентов COM, которые имеют манифест, содержащий один и тот же пустой элемент file
. Кроме того, имя dll в пустом элементе - это прямые C dll, которые не содержат никаких COM-объектов.
Я просмотрел доступный documentation, а xsd, предоставленный Microsoft, говорит мне, что синтаксически правильно иметь пустой элемент file
. Однако я не нашел ответа на вопрос, имеет ли смысл добавить file
элементов манифеста, которые не описывают никаких COM-объектов.
Никогда не пробовал, но должен. Клиент все еще зависит от реестра для создания объекта, но вместо зарегистрированной DLL он загрузит любую копию, присутствующую в папке EXE. Решает DLL Hell, когда автор модифицировал компонент, но не изменил указатели, стандартное преступление. Просто попробуйте, используйте отладчик, чтобы узнать, откуда идет DLL. –
@HansPassant: Я обновил вопрос, dll's являются прямыми C dll's, это имеет смысл тогда? DLL будет загружен из PATH, и в этом случае dll будет загружаться из папки EXE в любом случае. –