2017-10-17 5 views
2

함수 응용 프로그램에서 MEF를 사용하려고합니다. 내 요구 사항은 5-10 개의 외부 API에 액세스하고, HTTP 트리거 함수를 통해 데이터를 가져 와서 집계하고 반환하는 것입니다. 일부 논리를 기반으로 외부 종속성을 동적으로 해결해야합니다. 이러한 외부 구성 요소는 이미 작성되고 내보내집니다. 메타 데이터와 함께 가져와야합니다.Azure 함수에서 MEF 사용하기 App

VS2017에서 생성 된 기본 함수 앱에서 System.ComponentModel.Composition 어셈블리가 이미 참조 된 것으로 확인되었습니다. 진행 방법을 잘 모르겠습니다. 샘플 설정 코드는 Azure 함수에서 가능하다면 도움이 될 것입니다.

+0

누군가가 유사한 [문제]를 요청했다 (https://github.com/Azure/Azure-Functions/issues/550). 이 샘플 [단순 계산기 MEF 응용 프로그램] (https://code.msdn.microsoft.com/windowsdesktop/Simple-Calculator-MEF-1152654e/sourcecode?fileId=18843&pathId=1181778681)을 사용하여 하늘색 기능을 사용하는 것이 좋습니다. 이 문제를 좁히려면 –

+0

하늘 - 지역 사회에서 그 질문을했습니다. 응답 없음. https://github.com/Azure/Azure-Functions/issues/550 – Venky

답변

4

시나리오에 따라이 문제를 테스트하기 위해 VS2017을 통해 내 Http Trigger 함수를 만들었습니다. 나는 Simple Calculator MEF Application을 따라 갔다. 그리고 여기 내 프로젝트의 구조 등은 다음과 같습니다

enter image description here

:

enter image description here

Extensions 폴더에 모 조작을 지원하는 확장 lib 디렉토리를 추가하지 않고, 다음과 같은 결과를 검색 할 수

ExtendedOperations.dll을 추가하는 동안 Mod 작업은 다음과 같이 예상대로 작동 할 수 있습니다.

enter image description here

로컬 쪽에서 하드 코드를 통해 DirectoryCatalog을 초기화하는 경로를 추가했습니다. 당신이 kudu을 활용하고 탐색 할 수 있습니다, 또한

Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\bin\<your-extensions-folder>") 

: 푸른 측에 배포 할 때 미리 컴파일 된 기능 LIB가 D:\home\site\wwwroot\bin>에 배포 될 것입니다, 당신은 내 Extensions 폴더를 추가하고 확장 폴더를 검색하기위한 다음과 같은 코드를 사용할 수 있습니다 D:\home\site\wwwroot\<your-function-name>으로 변경 한 다음 Extensions 폴더를 추가 한 다음 DirectoryCatalogPath.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\<your-function-name>\<your-extensions-folder>")으로 초기화하십시오.

enter image description here

+0

perfect ......... – Venky