Я бы предпочел не менять GUID или имена для отдельных типов в сборке для целей управления версиями.
Но это точно то, что вам нужносделать, чтобы типы COM не мешали друг другу.[Guid] используется для выбора раздела реестра в HKLM \ Software \ Classes \ CLSID, где зарегистрирован класс COM.Две разные версии с одинаковым Guid будут перезаписывать ключи друг друга.В противном случае известный как DLL Ад.Для изменения открытого интерфейса требуется новый Guid, чтобы гарантировать, что клиенты, использующие старый, не умрут с невозможной диагностикой неправильного поведения.Сильное требование COM.
Пропуск атрибута [Guid] очень возможен, теперь вы оставляете его на усмотрение CLR, чтобы сгенерировать его для вас.Теперь атрибуты сборки начинают играть роль, значение guid автоматически генерируется скользким алгоритмом, который включает имя сборки и версию, а также набор методов интерфейса и их аргументы.Таким образом, гарантируя, что любые изменения автоматически создадут другую направляющую.И, как и ожидалось, другой [AssemblyVersion] будет генерировать другой [Guid].
Другой подход, который, как я предполагал, вы имели в виду под «рядом», заключается в не регистрируйте сборку, а вместо этого используйте манифест.Он должен быть встроен в клиентскую программу, вы используете элемент <clrClass>
для объявления вашего класса [ComVisible].Управление версиями теперь становится подробностью развертывания.Инструкции MSDN здесь .Имейте в виду, что он должен быть встроен в программу client , а не в вашу [ComVisible] сборку.Это, как правило, проблема.