Azure Functions를 사용하여 내 C # 함수에서 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
.
project.json
파일이 컴퓨터에 있는 경우 파일 업로드 옵션을 클릭 할 수도 있습니다.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)를 사용하여 브라우저에서 직접 파일을 관리하려면 :
Function app settings
Go to App Service Settings
Tools
버튼을 클릭하십시오On
아직 활성화되지 않은 경우 켜고Go
project.json
파일을 함수의 폴더 (함수 이름을 따서 명명 한 폴더)로 끌어다 놓습니다 .https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
파일을 폴더 (파일 그리드)로 드래그 앤 드롭합니다.연결되면 (위의 지침에 따라) Project.json
파일을/site/wwwroot/<function_name>
추가 배포 옵션은 https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/를 참조하십시오.
지속적 통합을 활성화하고 project.json
함수 앱이 실행되고 있지 않을 때 파일 과 함께 함수를 배포하는 경우 함수 앱이 초기화되면 패키지 복원이 자동으로 수행됩니다. 소스 제어에 파일을 추가 하지 않는 것이 좋습니다 project.lock.json
.
함수는 미리 컴파일 된 어셈블리로 배포 될 수도 있으며이 경우 모든 종속성 관리는 Visual Studio에서 처리됩니다. 이 옵션은 모든 버전의 Visual Studio에서 또는 Visual Studio 2017 Azure Functions Tools를 사용하여 표준 클래스 라이브러리로 사용할 수 있습니다 .
function script root
마지막 단락 은 무엇입니까 ? 나는 그것이 어디에 있는지 이해합니다 project.json
. 그 맞습니까?
project.json
스크립트 루트의 하위 폴더 함수 폴더에 있습니다. 스크립트 루트 wwwroot
는 Azure 의 폴더에 매핑됩니다 .
이 스레드는 저에게 많은 도움이되었지만 여전히 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"프로젝트가 있습니다.
2) 이제 Nuget 패키지를 추가하는 것이 좋습니다. "DEPENDENCIES"를 확장하고 마우스 오른쪽 버튼으로 클릭하여 "Manage Nuget Packages"옵션을 선택합니다. Nuget 패키지 대화 상자가 나타나면 설치할 Nuget 패키지를 선택하십시오. 아래 스크린 샷 참조
3) 이제 Azure 함수를 게시하면 Visual Studio에서 모든 설정 등을 처리합니다.
이 방법은 Visual Studio 2017 15.4 이상을 사용하는 경우에만 작동하며 그렇지 않은 경우 다른 사람이 설명한대로 다른 방법을 따라야합니다.
SFTP
에 저장된 외부 라이브러리 인 클라이언트 를 사용한다고 가정 해 보겠습니다 NuGet
.
이를 위해 최신 Azure Functions 에 따르면 사양에 따라 다음을 수행합니다.
당신의 내부 파일 열기 섹션 푸른 기능 과라는 새 파일을 추가합니다 function.proj
.
자세한 정보는 Microsoft 문서를 참조하십시오 .
그 안에 구조를 사용하여 패키지 참조를 function.proj
넣습니다 ( Visual Studio로 로컬 프로젝트를 만드는 경우 파일 내부에서 찾을 수있는 동일한 종류의 구조).Nuget
XML
*.csproj
NuGet
패키지를 설치 ).
다음으로 프로젝트에 대한 라이브러리 참조를 포함 해 보겠습니다.
여기서 필수적인 것은 다음과 같은 예에서 볼 수있는 것처럼 라이브러리에 대한 전체 경로를 제공해야한다는 것입니다. "D:\home\site\wwwroot\bin\your_custom_library.dll"
마지막으로 로그 섹션을 열고 코드를 저장합니다. 잠시 후 NuGet
패키지 복원 로그를 볼 수 있습니다 .
참고 : 이러한 로그는 저장할 때도 나타날 수 있습니다. function.proj
파일을 하거나 프로젝트를 실행할 .
라이브러리가 여전히 알 수없는 것으로 표시 되는 경우 Visual Studio 의 Azure Cloud 탐색기 를 Dll
사용하여 bin 폴더에 수동으로 추가해보십시오 .
function.proj
해당 위치 dll
가 로그 섹션에 나타납니다. 경우에 따라 Azure 함수에 대한 페이지를 다시 한 번 다시로드해야 할 때가 있습니다. 때때로 "실행"단추를 눌러 NuGet 패키지 설치 및 위치를 확인합니다. 로그 섹션에서 인쇄중인 항목을 위치로 확인하고 넣어보십시오.
Visual Studio 2017의 새로운 .csproj 형식도 지원됩니다. 프로젝트를 ASPNET 웹 프로젝트로 만드는 경우 Azure Functions 런타임은 프로젝트를 빌드하기 전에 필요한 모든 너겟 패키지를 다운로드합니다.