2016-09-16 5 views
10

Azure 함수에서 공유 클래스를 사용하여 코드를 복제하지 않겠습니다.Azure 함수 - 공유 클래스

나는 빈의 C# 함수를 만들고 함수 내에서 클래스를 만든 다음에 다른 기능에 가져올 시도

:

#r "../Shared/Class.cs"

답변

18

먼저, 루트에 폴더 안에 공유 코드를 삽입 (예 : "공유"). 해당 폴더에 Message.csx 클래스를 공유한다고 가정 해 보겠습니다 (예 : 전체 경로 D:\home\site\wwwroot\Shared\Message.csx).

#load "..\Shared\Message.csx" 

using System; 
using Microsoft.Azure.WebJobs.Host; 

public static void Run(Message message, TraceWriter log) 
{ 
    log.Info($"C# Queue trigger function processed message: {message.Id}"); 
} 

자세한 내용은 도움말 페이지 here를 참조하십시오

는 함수에이은 #load 명령을 사용하여 포함합니다. 기본적으로 해당 디렉토리의 파일은 변경 사항에 대해 추적되지 않습니다. 해당 디렉토리의 파일이 변경되면 함수가 변경 사항을 선택하고 다시 컴파일되도록하려면 watchDirectories 목록에 host.json의 "Shared"디렉토리를 추가 할 수 있습니다. 예컨대 :

{ 
    "watchDirectories": [ "Shared" ] 
} 
+0

내 wwwroot 폴더에 공유 폴더를 만들려면 어떻게해야합니까? FTP 액세스가 있지만 읽기 전용 모드 만 있습니다. –

+1

** Kudu **를 사용하여 기능 앱의 파일 시스템에 액세스하려면 [this help page] (https://azure.microsoft.com/en-us/documentation/articles/functions-reference)의 지침을 따르십시오. 설명 된대로 App Service Editor를 사용할 수도 있습니다. – mathewc

+0

작동! 고맙습니다! –

2

인해 푸른 함수 내에서 변화의 속도가,이 (Azure Functions Tools Roadmap 참조) 더 이상 C#을 기능에 권장되는 방법입니다. Visual Studio에서 C# 프로젝트를 구조화하는 가장 현대적이고 효율적인 패턴을 묘사 한 다음 블로그 게시물을 참조하고 C#에서 일반적으로하는 것처럼 공유 DLL의 모든 이점을 얻으십시오.

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/

https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited

+0

링크 된 블로그는 클래스 라이브러리가 자신의 응용 프로그램에 더 적합하다고 생각하는 고객을 위해 기능 클래스로 게시하는 .NET 클래스 라이브러리만을 설명합니다. "그러나 도구가 아직 준비되지 않았고"프로젝트에 몇 가지 수동 조작을하면 미리 컴파일 된 기능을 시도 할 수 있습니다 ". 링크를 공유해 주셔서 감사합니다. 무조건 "C# 프로젝트를 구조화하기위한 가장 현대적이고 효율적인 패턴"에 동의하지 않습니다. –

+0

사실, 적절한 컨텍스트를 지정하면 더 신중하게 말할 수 있습니다. 따라서 기능 App이 복잡 해짐에 따라 포털에서 CSX 스크립트를 사용하는 Azure Function App에서 여러 공유 클래스 및 누젠 (nuget) 종속성을 사용하는 것이 쉽지 않습니다. OP는 이러한 어려움을 처리하기 시작한 것 같습니다. 결과적으로 FunctionApps를 ASPNET Web Apps으로 시작하는 데 많은 이점이 있습니다. Microsoft와 적어도 한 명의 블로거가 지금 권장하고 있으며,이 경로를 추구하려는 사람들을 위해 위의 링크에서 세부 정보를 찾을 수 있습니다. – solvingJ

0

비주얼 스튜디오에서 작업이처럼 기능 앱 내에서 기능 사이에 C#을 스크립트 파일을 공유 할 수있는 방법을 찾고 :

#load "..\Shared\MySharedCode.csx" 

하면 해당 양해하여 주시기 바랍니다 'Copy to Output Directory'속성을 설정하여 공유 폴더의 파일을 'Copy always'로 설정해야합니다.