Можете ли вы вызвать COM-объект .NET 2.0 из веб-приложения ASP.NET 1.1? - PullRequest
5 голосов
/ 02 февраля 2010

У нас есть веб-приложение ASP.NET 1.1. Он вызывает COM-объект C ++, который, в свою очередь, вызывает COM-объект .NET. Первоначально этот .NET COM-объект представлял собой сборку .NET 1.1. Теперь нам нужно изменить этот COM-объект .NET, и теперь мы используем Visual Studio 2008, чтобы он стал COM-объектом .NET 2.0. Теперь мы обнаружили, что наше веб-приложение ASP.NET 1.1 все еще может вызывать COM-объект C ++, но COM-объект C ++ не может вызвать CoCreateInstance () для нового COM-объекта .NET 2.0. Когда мы настраиваем веб-приложение на использование .NET 2.0 Framework, COM-объект C ++ может вызывать COM-объект .NET 2.0, но это нарушает веб-приложение.

В настоящее время я планирую создать объект COM .NET с помощью Visual Studio .NET 2003, чтобы я мог сделать его сборкой .NET 1.1. Но я бы не стал этого делать, если это возможно. Я знаю, что мы также должны обновить наше веб-приложение до .NET 2.0, но это займет больше времени.

Итак, есть ли у нашего веб-приложения ASP.NET 1.1 возможность вызывать COM-объект .NET 2.0 через COM-объект C ++?

Спасибо за любые предложения.

-Дейв Херрманн

Ответы [ 3 ]

1 голос
/ 02 февраля 2010

Нет, если вы запускаете его в процессе..Net v1.1 и v2.0 среды выполнения не могут сосуществовать в процессе.Который загружается первым, выигрывает.

Однако вы можете запустить его в контексте активации COM + в отдельном процессе.Это может быть целесообразным решением вашей ситуации.

0 голосов
/ 03 февраля 2010

Если я вас правильно понимаю, вы хотите собрать свою сборку на 1.1, а не на 2.0. Почему бы вам не попробовать использовать компилятор командной строки? Вам не нужно устанавливать VS 2003 только для того, чтобы скомпилировать и собрать сборку.

Если вы не знаете, как начать, установите VS на компьютер с песочницей, соберите проект и проверьте окно вывода - вы увидите, какие команды используются для компиляции и сборки (csc.exe или vbc.exe является наиболее важные из них) В большинстве случаев это не ракетостроение.

Еще один вариант: перейти на 2.0 в целом - не повредит.

P.S .: .NET COM объект является неправильным написанием. Назовите это сборкой.

0 голосов
/ 02 февраля 2010

Быстрое предложение - это может ничего не облегчить ... но есть возможный способ обойти это, почему бы не создать карту памяти для связи IPC между .NET 1.1 и приложением .NET 2.0, скажем, например, C ++ COM создает карту памяти для чтения / записи, объект .NET 1.1 открывает карту памяти, записывает некоторые данные, COM-объект C ++ читает ее и делегирует вызов COM-объекту .NET 2 ... и возвращает данные через карта памяти ... извините, если бы я не мог дать вам лучшее предложение, чем это ... вы ограничены во времени?

1.1 .NET -> C ++ COM -> .NET 2.0 COM

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

...