2014-07-10 2 views
0

일부 내부 작업을 수행하기 위해 인터페이스 (ServiceContract 인터페이스 아님)를 사용하는 WCF 서비스를 개발 중입니다. 내 목표는이 인터페이스 (및 해당 web.config 업데이트)를 구현하는 클래스가있는 새 DLL을 제공하여 배포 후이 서비스의 기능을 확장하는 것입니다.Visual Studio 2012 내에서 다른 프로젝트의 클래스를 동적으로로드하는 방법은 무엇입니까?

나는 인터페이스를 구현하는 클래스 하나만 가지고 시작합니다. 내 솔루션에서는 인터페이스 정의가있는 하나의 프로젝트 (WCF 서비스 응용 프로그램)와 다른 프로젝트 (Windows 클래스 라이브러리)의 인터페이스를 구현하는 클래스가 있습니다.

이 라인이라고
InterfaceFoo af = (InterfaceFoo)System.Activator.CreateInstance(AssemblyQualifiedName, ClassType).Unwrap(); 

, 내가 파일을로드 할 수 없습니다, FileNotFoundException이 얻을 : 나는 (서비스가 호출 될 때 전달 된 매개 변수에 따라) 동적으로 클래스를로드하려면 다음 코드를 사용하고

또는 어셈블리.

위의 코드는 정확합니다. 일단 개념 프로젝트를 빌드하고 배포하면 DLL을 EXE 파일과 같은 폴더에두고 별도의 개념 증명 프로젝트에서 런타임시 작업하게됩니다. 내 문제는 프로젝트 또는 Visual Studio 내에서 실행할 때 CreateInstance() 메서드에 전달할 변수를 참조하는 방법과 관련이 있다고 생각합니다.

내가 시도했지만 여전히 같은 오류가 발생합니다. WCF 서비스 프로젝트에서 클래스 라이브러리 프로젝트를 참조로 설정했습니다. WCF Service Project에서 인터페이스 구현 클래스에 대한 링크를 추가했습니다.

AssemblyQualifiedName 및 ClassType에 대해 사용하고있는 값이 아직 배포되지 않았기 때문에 Visual Studio에서 작동하지 않는지 궁금합니다.

완전히 다른 접근 방식이 더 좋다고 생각하더라도 조언을 제공해 주시면 감사하겠습니다.

게시 후 추가 : 클래스 라이브러리 프로젝트의 클래스를 구현하는 인터페이스를 WCF 서비스 프로젝트로 옮겼습니다. 내가 이것을 할 때, 그것은 효과적이다. 저에게 저에게 어셈블리와 타입 매개 변수는 문제로 필요 없으며, 문제는 클래스 라이브러리 프로젝트에 올바르게 연결되지 않는다는 것입니다.

+0

몇일 전 비슷한 질문에 답했습니다. http://stackoverflow.com/questions/24557849/decide-what-dll-to-call-at-runtime/24558322#24558322 – loopedcode

+0

내 게시물을 보았지만 내 상황에 어떻게 적용할지 모르겠다. 내 코드가 배포되면 작동하지만 Visual Studio 내에서 개발할 때 좋은 참조를 얻지 못하는 것 같습니다. – user640118

답변

0

인터페이스 정의를 다른 공유 라이브러리 (dll)로 옮긴 다음 사용할 수 있습니다.

관련 문제