У меня есть C ++ COM компонент / DLL, который я хочу загрузить в мое C# приложение. Я создал сборку взаимодействия с tlbImp.exe , и это работало последние пару лет.
У меня есть разные версии моего приложения. В соответствии с различными версиями моего приложения я назначаю компоненту COM другой GUID, чтобы их можно было устанавливать рядом. У меня есть свой Guid для моей среды разработки.
После того, как я скомпилировал свое приложение, файлы упакованы вместе, и соответствующая сборка взаимодействия помещается в пакет. До сих пор я использовал. Net framework 2.0, потому что у меня были клиенты, которые не могли обновиться. Этот клиент перешел на более новую версию. Net Framework, и я могу обновить приложение до. Net 4.5.2.
Когда мое приложение загружается, оно получает объект класса класса COM-компонент посредством вызова метода другого класса. Метод передает мне объект, который является правильным. с VID GUID. Я пытаюсь преобразовать этот объект типа Object
в тип CCHView
, который является интерфейсом, сгенерированным tlbImp.exe . Проблема в том, что тип CCHView
, на который ссылаются, все еще имеет GUID разработки.
Object interopObject = InteropController.GetCHView(); //this object has GUID V1
if (interopObject != null)
{
//This Type expects/has the development GUID
_chView = (CCHView)interopObject; //this crashes in 4.5 but not in 2.0
CCHViewCommunicator communicator = CCHViewCommunicator.Instance();
communicator.SetControl(_chView);
communicator.Run();
_chViewConnector = new CCHViewConnector(_chView);
}
Кажется, что GUID разработки «запекается» в приложении, даже если сборка взаимодействия переключается при упаковке время.
Я попытался создать сборки взаимодействия для. Net 2.0 и 4.0, которые ведут себя одинаково, что означает, что оба сбоя при использовании в приложении. Net 4.5.
Ошибка возникает, когда я просто переключаю свое приложение XYZ.csproj с. Net 2.0 на. Net 4.5, все остальное остается прежним. Почему. Net 4.5 ведет себя по-разному и есть ли способ решить эту проблему?
Вот GUID, если они представляют интерес.
- GUID V1: {D39B90BA-5CB8 -4C20-8726-3BB7758DB5D1}
- GUID V2: {30485704-5B4E-4CED-81E9-6A49D7F3247D}
- РУКОВОДСТВО по разработке: {6875B12E-9DF1-4896-A2D9-02FF03010