2011-09-15 3 views
0

우리는 우리 프로젝트에서 사용하고있는 DLL을 만들었습니다. 이제는 여러 가지 이유로 인해이를 실행 파일로 유지해야하지만 문제는 이벤트를 발생시켜 다른 솔루션과 통합된다는 것입니다.프로세스간에 메시지 전달

실행 파일로 이동하면 이벤트의 기능을 유지하기 위해 코드를 변환 할 수 있습니까? (더 이상 exe를 직접 참조 할 수 없으며 프로세스로 호출해야합니다.)

+0

어셈블리는 이벤트를 Throw 할 수 없으며 코드 클래스 인 메서드 만 어셈블리가 아닌 이벤트를 throw 할 수 있습니다. –

+0

그래서 원래의 dll 어셈블리에서 거의 모든 코드를 손상시키지 않으면 서 본체를 별도의 실행 파일로 옮겨야하는 코드를 옮길 수 있습니다. –

답변

0

dll 어셈블리뿐만 아니라 exe 어셈블리 참조도 수행해야합니다. 다른 것들은 당신에게 달린 것입니다. 실행 중에 실행 파일에 액세스하는 것을 알고 있으면이 실행 파일을 직접 참조하는 다른 시작 실행 파일 프로젝트를 작성한 다음 이전 실행 파일을 사용하여 새 실행 파일을 실행하십시오.

두 번째 질문은 왜 그렇게 어려운 일을하는 것입니까? 왜 DLL 어셈블리를 사용하여 프로젝트간에 코드를 공유하지 않습니까?

요약하면, 원래 어셈블리 dll에 모든 코드를 그대로 둔 채 메인 (..) 본문을 필요로하는 코드를 별도의 실행 가능 애플리케이션으로 옮길 수 있습니다.

+0

라이센스 문제 - 우리가 만든 어셈블리는 다양한 시나리오에서 변경되지 않고 작동하지만 솔루션 내부에서 빌드되기 위해서는 모든 개발자가 해당 dll의 모든 구성 요소에 대한 라이선스를 가져야합니다. 따라서 .dll에서 exe를 만들면 라이센스가 포함되어 있으므로 exe 사용자가 별도로 라이센스를 취득 할 필요가 없습니다. – veljkoz

+0

@veljkoz 이해가 안됩니다. 라이선스가 필요한 것은 무엇입니까? 일부 타사 라이브러리 (DLL) 인 경우 아무 것도 변경되지 않고 * 귀하의 * 코드가 DLL 또는 EXE인지에 관계없이 DLL은 여전히 ​​독립 엔터티입니다. DLL은 절대로 EXE에 포함되지 않습니다. –

+0

@JonathonReinhart 솔루션에서 타사 DLL을 사용하는 경우 솔루션을 구축하고 배포 할 수 있도록 라이센스가 필요합니다 (예 : infragistics, teleric 등). 그리고 실제로 디자인하고있는 구성 요소에는 이상이 없습니다. 하지만 더 이상 디자인 할 필요가없는 솔루션의 일부인 구성 요소가 있으며 별도의 자체 라이센스를 보유하고있는 모든 개발자가 필요하지 않은 상태에서 완벽하게 배포 할 수 있습니다. 따라서 라이센스를 참조해야하는 dll을 작성하는 대신 exe를 출력 할 수 있으므로 대신 exe를 출력 할 수 있습니다. – veljkoz

1

프로세스 간 통신의 경우 명명 된 파이프를 참조하십시오.

관련 문제