programing tip

Azure Functions에서 NuGet 패키지를 어떻게 사용할 수 있나요?

itbloger 2020. 8. 15. 08:50
반응형

Azure Functions에서 NuGet 패키지를 어떻게 사용할 수 있나요?


Azure Functions를 사용하여 내 C # 함수에서 NuGet 패키지를 참조하고 사용할 수 있나요?


예! Azure Functions 포털은 현재 NuGet 패키지를 추가하고 관리하는 메커니즘을 제공하지 않지만 런타임은 NuGet 참조를 지원하며 함수를 컴파일하고 실행할 때 올바르게 사용되는지 확인합니다.

종속성을 정의 Project.json하려면 필요한 NuGet 패키지 참조 를 사용하여 파일 을 만들어야합니다 . 다음은 Microsoft.ProjectOxford.Face버전 1.1.0에 대한 참조를 추가하는 예입니다 .

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}

Azure Functions 포털은 다음을 생성 (또는 업로드)하는 데 사용할 수있는 함수 파일을 관리하는 편리한 방법을 제공합니다 project.json.

  1. 함수의 개발 섹션에서 파일보기를 클릭하십시오.
  2. 파일 생성 옵션을 클릭 합니다 (이전에 생성 된 project.json파일이 컴퓨터에 있는 경우 파일 업로드 옵션을 클릭 할 수도 있습니다.
  3. 파일 이름을 지정하고 project.json패키지 참조를 정의합니다 (위의 예제를 템플릿으로 사용할 수 있음).

패키지 복원 프로세스가 시작되고 로그 창에 다음과 유사한 출력이 표시됩니다.

2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261 
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189 
2016-04-04T19:02:57.189 
2016-04-04T19:02:57.455 Packages restored.

예상대로 Azure Functions 런타임은 패키지 어셈블리에 대한 참조를 자동으로 추가하므로을 사용하여 어셈블리 참조를 명시 적으로 추가 할 필요가 없습니다 #r "AssemblyName". 필요한 using문을 함수에 추가 하고 NuGet 패키지에 정의 된 형식을 사용할 수 있습니다. 참조했습니다.

추가 배포 옵션

Azure Functions는 App Services를 기반으로 구축되었으므로 위 단계의 대안으로 표준 Azure Web Apps (Azure 웹 사이트)에 사용할 수있는 모든 훌륭한 배포 옵션에 액세스 할 수 있습니다.

여기 몇 가지 예가 있어요.

App Service Editor (Monaco) 사용

App Service Editor (Monaco)를 사용하여 브라우저에서 직접 파일을 관리하려면 :

  • Azure Functions 포털에서 Function app settings
  • 언더 고급 설정 섹션에서 클릭Go to App Service Settings
  • Tools버튼을 클릭하십시오
  • 에서 개발 , 클릭 앱 서비스 편집기
  • On아직 활성화되지 않은 경우 켜고Go
  • 로드되면 project.json파일을 함수의 폴더 (함수 이름을 따서 명명 한 폴더)로 끌어다 놓습니다 .

SCM (Kudu) 엔드 포인트 사용

  • 로 이동: https://<function_app_name>.scm.azurewebsites.net
  • 디버그 콘솔> CMD를 클릭하십시오.
  • 로 이동 D:\home\site\wwwroot\<function_name>
  • Project.json파일을 폴더 (파일 그리드)로 드래그 앤 드롭합니다.

FTP

지속적인 통합

지속적 통합을 활성화하고 project.json함수 앱이 실행되고 있지 않을 때 파일 과 함께 함수를 배포하는 경우 함수 앱이 초기화되면 패키지 복원이 자동으로 수행됩니다. 소스 제어에 파일을 추가 하지 않는 것이 좋습니다 project.lock.json.

미리 컴파일 된 어셈블리

함수는 미리 컴파일 된 어셈블리로 배포 될 수도 있으며이 경우 모든 종속성 관리는 Visual Studio에서 처리됩니다. 이 옵션은 모든 버전의 Visual Studio에서 또는 Visual Studio 2017 Azure Functions Tools를 사용하여 표준 클래스 라이브러리로 사용할 수 있습니다 .


이 스레드는 저에게 많은 도움이되었지만 여전히 Project.json을 작동 시키려고 몇 시간을 낭비했습니다.

버전 2.x에서 Azure 함수를 만드는 경우 다른 방식으로이를 수행해야합니다.

명시된대로 새 파일을 생성하고 이름을 function.proj로 지정합니다 . 이 파일에는 Nuget을 통해 라이브러리를 가져 오기위한 XML 구조가 있습니다.

다음은 .Net 용 Amazon S3 SDK를 가져 오는 예입니다.

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
    <PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
  </ItemGroup>

</Project>

이것을 저장하면 패키지가 설치되고 있다는 콘솔 업데이트가 표시됩니다. 이것은 실제로 잘 문서화되어 있지 않으며 이것을 알아내는 데 몇 시간이 걸렸습니다. 그래서 나는 이것이 누군가를 돕기를 바랍니다.


Azure Functions에서 Nuget 패키지를 사용할 수 있습니다. 가장 쉬운 방법은 Azure Functions 용 템플릿이있는 Visual Studio 2017 15.4를 사용하는 것입니다. 아래 단계를 따르십시오

1) Azure 함수 프로젝트 추가 : 솔루션을 마우스 오른쪽 버튼으로 클릭하고 새 프로젝트 추가를 선택합니다. CLOUD 옵션으로 이동하면 "Azure Function"프로젝트가 있습니다.

Azure 기능

2) 이제 Nuget 패키지를 추가하는 것이 좋습니다. "DEPENDENCIES"를 확장하고 마우스 오른쪽 버튼으로 클릭하여 "Manage Nuget Packages"옵션을 선택합니다. Nuget 패키지 대화 상자가 나타나면 설치할 Nuget 패키지를 선택하십시오. 아래 스크린 샷 참조

3) 이제 Azure 함수를 게시하면 Visual Studio에서 모든 설정 등을 처리합니다.

이 방법은 Visual Studio 2017 15.4 이상을 사용하는 경우에만 작동하며 그렇지 않은 경우 다른 사람이 설명한대로 다른 방법을 따라야합니다.


NuGet에 저장된 외부 라이브러리 인 SFTP 클라이언트를 사용한다고 가정 해 보겠습니다.

이를 수행하려면 최신 Azure Functions 사양에 따라 다음을 수행합니다.

  1. Azure 함수 내에서 파일 섹션을 열고 function.proj.

    여기에 이미지 설명 입력자세한 정보는 Microsoft 문서를 참조하십시오 .


  1. 그 안에 function.projXML 구조를 사용하여 Nuget 패키지 참조를 넣습니다 ( *.csprojVisual Studio로 로컬 프로젝트를 만들고 NuGet 패키지를 설치하는 경우 파일 내부에서 찾을 수있는 것과 동일한 종류의 구조 ).

    여기에 이미지 설명 입력


  1. Next, let's include the library reference to the project: 여기에 이미지 설명 입력

    What is essential here is that you should provide a full path to the library, like in the example you can see it is: "D:\home\site\wwwroot\bin\your_custom_library.dll"


  1. Next test some library-specific code: 여기에 이미지 설명 입력

  1. Finally, open the Logs section and save the code. After some time you should see the NuGet packages restoring log. 여기에 이미지 설명 입력

    Note: these logs could also appear when saving function.proj file or when running the project.


In case if the library still appears as unknown try to add it's Dll's manually into the bin folder using Azure Cloud explorer from the Visual Studio.

여기에 이미지 설명 입력


Note that the new .csproj format in Visual studio 2017 is supported also. If you create your project as a ASPNET Web Project, the Azure Functions runtime downloads all the nuget packages necessary before building your project.

참고 URL : https://stackoverflow.com/questions/36411536/how-can-i-use-nuget-packages-in-my-azure-functions

반응형