2010-02-02 1 views
5

ASP.NET 1.1 웹 응용 프로그램이 있습니다. 그것은 C++ COM 객체를 호출하며,이 객체는 다시 .NET COM 객체를 호출합니다. 원래이 .NET COM 개체는 .NET 1.1 어셈블리였습니다. 이제 우리는이 .NET COM 객체를 수정해야하고 이제는 Visual Studio 2008을 사용하여 .NET 2.0 COM 객체가되었습니다. 이제 ASP.NET 1.1 웹 응용 프로그램이 C++ COM 개체를 호출 할 수 있지만 C++ COM 개체는 새 .NET 2.0 COM 개체에서 CoCreateInstance()를 호출 할 수 없습니다. .NET 2.0 Framework를 사용하도록 웹 응용 프로그램을 구성하면 C++ COM 객체가 .NET 2.0 COM 객체를 호출 할 수 있지만 이렇게하면 웹 응용 프로그램이 중단됩니다. 순간 ASP.NET 1.1 웹 응용 프로그램에서 .NET 2.0 COM 개체를 호출 할 수 있습니까?

, 나는 내가 그것을 .NET 1.1 어셈블리를 만들 수 Visual Studio .NET 2003을 사용 닷넷 COM 개체를 rebulding에 계획입니다. 하지만 가능하다면 그렇게하지 않을 것입니다. 나는 우리의 웹 애플리케이션도 .NET 2.0으로 업그레이드해야한다는 것을 알고있다. 그러나 그것은 오래 걸릴 것이다.

그래서, 우리의 ASP.NET 1.1 웹 응용 프로그램은 C++ COM 객체를 통해 .NET 2.0 COM 개체를 호출 할 수 있도록하기위한 방법이 있습니까?

주셔서 감사합니다.

-Dave Herrmann

+1

.NET 1.1 응용 프로그램을 .NET 2.0으로 업그레이드 할 가능성이 없습니까? .NET 2.0에는 .NET 1.1 응용 프로그램을 깨뜨릴만한 것이 거의 없습니다. –

답변

1

진행중인 경우 실행하지 마십시오. .Net v1.1 및 v2.0 런타임은 프로세스에서 공존 할 수 없습니다. 어느 것이 먼저 적재 되었습니까?

당신은하지만, 별도의 프로세스에서 COM + 활성화 컨텍스트에서 실행 할 수 있어야한다. 이것은 귀하의 상황에 대한 적절한 해결책 일 수 있습니다.

+0

그래, 내가 알아 낸거야. 내 .NET 2.0 COM 어셈블리는 IIS의 일부로 실행되므로 in-proc COM 개체입니다. 그래서, 제 유일한 해결책은 이전 Visual Studio .NET 2003 개발 환경을 다시 설치하고 .NET 1.1을 사용하여 어셈블리를 다시 빌드하는 것입니다. 답장을 보내 주셔서 감사합니다. -Dave Herrmann –

+0

in-proc COM 개체를 별도의 프로세스로 실행하고 COM + 인프라에서 호출을 마샬링 할 수 있습니다. 구성의 간단한 문제입니다. 당신은 먼저 시도해 볼 수도 있습니다 ... – codekaizen

0

빠른 제안 - 그것은 무엇이든 쉽게하지 않을 수 있습니다 ...하지만이 주위에 가능한 방법은 예를 들어, .NET 1.1 및 .NET 2.0 응용 프로그램, 말 간의 IPC 통신을위한 메모리 맵을 만들 이유가있다 , C++ COM은 읽기/쓰기를위한 메모리 맵을 생성하고, .NET 1.1 객체는 메모리 맵을 열고, 일부 데이터를 쓰고, C++ COM 객체는 그것을 읽고 .NET 2 COM 객체에 대한 호출을 위임하고 데이터를 반환합니다 메모리 맵을 통해 ... 죄송합니다. 그보다 더 좋은 제안을 드릴 수 없다면 ... 시간 노력으로 제약을 받고 있습니까?

1.1 .NET -> C++ COM -> .NET 2.0 COM이 도움이

희망, 안부, 톰. 내가 제대로 이해하면

+0

COM + 컨텍스트를 구성하는 것이 훨씬 쉬울 것이라고 생각합니다. 코드 + 재 컴파일이 필요 없습니다. – codekaizen

+0

@codekaizen : 오 오케이 ... 제 제안은 약간 극단적이었습니다 .... :) – t0mm13b

0

, 당신은하지 2.0, 1.1 어셈블리를 구축하고자합니다. 왜 명령 행 컴파일러를 사용해 보시지 않으시겠습니까? 어셈블리를 컴파일하고 빌드하기 위해 VS 2003 만 설치할 필요는 없습니다.

시작 방법을 모르는 경우 샌드 박스 시스템에 VS를 설치하고 프로젝트를 빌드하고 출력 창을 확인하십시오. 컴파일 및 빌드에 사용되는 명령이 표시됩니다 (csc.exe 또는 vbc.exe중인 가장 중요한 것들) 대부분의 경우 로켓 과학이 아닙니다.

또 다른 옵션 : 일반적으로 2.0 이동은 - 정말 해치지 않을 것입니다.

P .: .NET COM 개체의 맞춤법이 잘못되었습니다. 어셈블리라고 부르세요.

관련 문제