Есть управляемый сервер компонентов COM и клиентское приложение (оба написаны на C #).Оба ссылаются на сборку System.Net.Http
версии 4.2.0
.
Когда COM-компонент создается в клиентском приложении (с помощью функции CoCreateInstance
из ole32.dll
) и функция из этого экземпляра называется Iошибка при попытке привести объект, возвращенный к типу из System.Net.Http
версии 4.0.0
.
Как в соответствии с окном модулей для клиентского приложения (с указанием пути к загруженной dll, который я открываю с помощью ildasm для просмотра версии), которыйзагружает System.Net.Http of 4.2.0
и ошибка
{"Неверный код состояния HTTP": "[A] System.Net.Http.Headers.MediaTypeHeaderValue нельзя преобразовать в [B] System.Net.Http.Headers..MediaTypeHeaderValue. Тип A происходит от «System.Net.Http, версия = 4.2.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a» в контексте «LoadFrom» в расположении «E: \ hws \ src \ Tools \ VirtualPeripherals \ ClientBrokerProxy».bin \ Debug \ net461 \ System.Net.Http.dll ". Тип B происходит от" System.Net.Http, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a "в контексте" по умолчанию "в расположении'C: \ windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Net.Http \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Net.Http.dll'. "}
, показывая, чтоКомпонент COM использует 4.2.0
, похоже, что во время маршаллинга происходит попытка приведения типа с использованием неправильной сборки.
- Как указать, какую сборку (
System.Net.Http 4.2.0
) необходимо использовать во время маршаллинга? - Если это невозможно, как я могу выразить для сервера компонентов COM, что ему нужно использовать перенаправление привязки (к
System.Net.Http 4.0.0
)?