2017-02-12 1 views
2

나는 푸른 기능 완전히 배포하기 전에 컴파일하고 싶기 때문에 나는 전에 리팩토링의 모든 혜택 (자동 renamings)가 원하기 때문에 배포, 나는 을 Csx 파일을 제거하고 Dll을 사용하고 싶습니다.C# 푸른 기능은 푸른에서 작동하지 않습니다 (그러나 에뮬레이터에서)

그리고 모든 코드가 .Dll에 있어야합니다. - 완전히 컴파일되었습니다.

는 그래서 로컬 에뮬레이터에서 잘 작동하지만 나는 푸른

난 항상 로그 파일에 동일한 오류 메시지가 얻을에서 동작하지 않습니다 :

MailSenderFunction: Unable to determine the primary function script. 
Try renaming your entry point script to 'run' (or 'index' in the case of  Node), 
or alternatively you can specify the name of the entry point script explicitly by adding a 'scriptFile' property to your function metadata. 

를 그리고 돈 내 기능이 포털의 기능 응용 프로그램에 표시되지 않습니다.

function.json :

{ 
    "disabled": false, 
    "scriptFile": "./bin/MailSenderFunctionLib.dll", 
    "entryPoint": "MyCompany.MailSenderFunctionLib.MailSenderFunctionProcessor.RunCsxLess", 
    "bindings": [ 
    { 
     ... 
    } 
    ] 
} 

는 DLL 코드 :

namespace MyCompany.MailSenderFunctionLib 
{ 
    public class MailSenderFunctionProcessor 
    { 
    public static void RunCsxLess(Mail mail) 
    { 
     // ... 
    } 
} 

DLL은 기능, 앱 기능

아닌 bin 디렉토리의 bin 디렉토리에

아이디어가 있으십니까?

답변

2

dll을 function.json과 동일한 디렉토리에두고 scriptFile에서 디렉토리 접두어를 제거해야했습니다. 서브 디렉토리에서 작동하지 못했습니다.

.dll을 가져 오는 run.csx 파일을 사용하여 해당 DLL에서 정적 메서드 만 실행하면 하위 디렉터리에서 작동하도록 할 수 있습니다. 예를 들면 :

#r "DLLs\MyFunction.dll" 

using System; 

public static void Run(string myEventHubMessage, TraceWriter log) 
{ 
    MyFunction.Program.Run(myEventHubMessage, log); 
} 

(이 예에서는 내가 eventHubTrigger를 사용했다)

+0

답해 주셔서 감사합니다. 내 다음 목표는 문자열 대신 Mail 사용자 정의 클래스를 사용하는 것입니다. 사용자 정의 클래스는 csx 파일에서 잘 작동하지만 csx 없이는 직렬화 작업을 수행하지 않습니다. 나는 deserialization 문제가있어. 아이디어 있니? –

+0

커스텀 클래스에 인수 바인딩을 사용하지 않았기 때문에 (그래서 당신이 말하는 것 같아요), 나는 경험으로 말할 수 없습니다. 사용중인 클래스가 public이고 해당 속성에 모두 public getters/setter가 있는지 확인하십시오. [Azure 함수 개발자 참조] (https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp)에는 몇 가지 추가 제안 사항이있을 수 있습니다. –

+0

사실 저는 사용자 정의 바인딩을 만들 필요가 없습니다. 이전에 다른 Azure 함수에서는 없었습니다. 방금 일부 배포 옵션을 수정해야만했습니다. 추가 개발 노력 없이도 사용할 수 있습니다. –

7

이 완전히 런타임 (> 1.0.10690)의 다음 버전에서 지원됩니다.

당신은 앞서이 시점에서 호스팅 된 환경의 개선 here

로컬로 실행하면 CLI 미리보기 (불행히도) 때문에 때 다른 행동을 관찰하는 이유에 대한 자세한 정보를 찾고 새로운 런타임 비트를 사용 할 수

. 우리는 이러한 릴리스가 앞으로 나아갈 수 있도록 프로세스를 변경하고 있습니다.

관련 문제