Я бы хотел использовать манифесты для указания зависимости от COM-сервера ( безрегулярный COM ).
Потребительское приложение будет работать нормально без COM-сервера - только около 1,7% его функций использует COM-сервер. Таким образом, со старым regsvr32
он будет запускаться и работать нормально, пока пользователь не сделает что-то, что вызовет вызов CoCreateInstance()
, и в этот момент потребитель получит сообщение об ошибке.
Теперь я какое-то время играл с манифестами, и похоже, что потребитель даже не запустится, если в файловой системе нет сборки COM-сервера, от которой он зависит. Это не хорошо.
Я добавил «дополнительный манифест» со следующим содержанием:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="TheComServer.X"
version="1.0.0.0"/>
</dependentAssembly>
</dependency>
</assembly>
Есть ли способ использовать reg-free COM с манифестами и сделать зависимость необязательной - чтобы потребительская программа запускалась и работала нормально до тех пор, пока CoCreateInstance()
фактически не будет вызван?