Sử dụng Azure Functions , tôi có thể tham khảo và sử dụng các gói NuGet trong hàm C # của mình không?
Sử dụng Azure Functions , tôi có thể tham khảo và sử dụng các gói NuGet trong hàm C # của mình không?
Câu trả lời:
Đúng! Mặc dù cổng Azure Functions hiện không cung cấp cơ chế để thêm và quản lý các gói NuGet, nhưng thời gian chạy hỗ trợ các tham chiếu NuGet và sẽ đảm bảo chúng được sử dụng chính xác khi biên dịch và thực thi các chức năng của bạn.
Để xác định các phần phụ thuộc của bạn, bạn cần tạo một Project.json
tệp với các tham chiếu gói NuGet bắt buộc. Dưới đây là một ví dụ thêm tham chiếu đến Microsoft.ProjectOxford.Face
phiên bản 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Cổng Azure Functions cung cấp một cách thuận tiện để quản lý các tệp chức năng của bạn, mà chúng tôi có thể sử dụng để tạo (hoặc tải lên) project.json
:
project.json
tệp đã tạo trước đó trên máy của mìnhproject.json
và xác định các tham chiếu gói của bạn (bạn có thể sử dụng ví dụ trên làm mẫu).Quá trình khôi phục gói sẽ bắt đầu và bạn sẽ thấy đầu ra tương tự như sau trong cửa sổ nhật ký của mình:
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.
Như mong đợi, thời gian chạy Azure Functions sẽ tự động thêm các tham chiếu vào các gói lắp ráp, vì vậy bạn KHÔNG cần phải thêm các tham chiếu hợp ngữ một cách rõ ràng bằng cách sử dụng #r "AssemblyName"
, bạn chỉ có thể thêm các using
câu lệnh bắt buộc vào hàm của mình và sử dụng các kiểu được xác định trong gói NuGet bạn ' đã tham chiếu.
Vì Chức năng Azure được xây dựng trên Dịch vụ ứng dụng, như một sự thay thế cho các bước ở trên, bạn cũng có quyền truy cập vào tất cả các tùy chọn triển khai tuyệt vời có sẵn cho Ứng dụng web Azure tiêu chuẩn (Trang web Azure).
Dưới đây là một số ví dụ:
Để quản lý tệp của bạn trực tiếp từ trình duyệt của bạn bằng cách sử dụng Trình chỉnh sửa dịch vụ ứng dụng (Monaco):
Function app settings
Go to App Service Settings
Tools
nútOn
nếu nó chưa được bật và nhấp vàoGo
project.json
tệp của bạn vào thư mục chức năng của bạn (thư mục được đặt tên theo chức năng của bạn.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
tệp của bạn vào thư mục (vào lưới tệp)Sau khi kết nối (làm theo hướng dẫn ở trên) sao chép Project.json
tệp của bạn vào/site/wwwroot/<function_name>
Để biết các tùy chọn triển khai bổ sung, hãy xem: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Nếu bạn bật tích hợp liên tục và triển khai chức năng của mình với một project.json
tệp khi Ứng dụng chức năng của bạn không chạy, thì việc khôi phục gói sẽ tự động xảy ra sau khi Ứng dụng chức năng của bạn khởi chạy. Bạn không nên thêm project.lock.json
tệp của mình vào kiểm soát nguồn.
Các chức năng cũng có thể được triển khai dưới dạng các hội đồng biên dịch trước và trong trường hợp này, tất cả việc quản lý phụ thuộc được xử lý trong Visual Studio. Tùy chọn này có thể được sử dụng làm thư viện lớp tiêu chuẩn trên bất kỳ phiên bản nào của Visual Studio hoặc bằng cách sử dụng Công cụ chức năng Azure của Visual Studio 2017 .
function script root
ở đoạn cuối cùng của bạn? Tôi hiểu nó nằm ở đâu project.json
. Đúng không?
project.json
nằm trong thư mục chức năng của bạn, là một thư mục con của thư mục gốc tập lệnh. Bản đồ gốc tập lệnh tới wwwroot
thư mục của bạn trong Azure.
Chủ đề này đã giúp tôi rất nhiều - nhưng tôi vẫn lãng phí vài giờ để cố gắng làm cho Project.json hoạt động - nhưng không có kết quả.
Nếu bạn tạo một hàm Azure trong phiên bản 2.x, bạn cần thực hiện việc này theo một cách khác.
Tạo một tệp mới như đã nêu nhưng đặt tên là function.proj . Tệp này có cấu trúc XML để nhập thư viện qua Nuget.
Đây là ví dụ của tôi khi nhập Amazon S3 SDK cho .Net;
<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>
khi lưu cái này, bạn sẽ thấy bản cập nhật bảng điều khiển cho biết rằng các gói đang được cài đặt. Điều này thực sự không được ghi chép rõ ràng và tôi đã mất vài giờ để tìm ra điều này. Vì vậy, tôi hy vọng điều này sẽ giúp ai đó.
Bạn có thể sử dụng các gói Nuget trong Azure Functions của mình. Cách dễ nhất sẽ là sử dụng Visual Studio 2017 15.4, nơi có mẫu cho Hàm Azure. Làm theo các bước dưới đây
1) Thêm chức năng Azure Dự án: Nhấp chuột phải vào giải pháp và chọn Thêm dự án mới. Vào tùy chọn CLOUD ở đó bạn sẽ tìm thấy dự án "Azure Function".
2) Bây giờ, thật tuyệt khi thêm bất kỳ gói Nuget nào. Mở rộng "DEPENDENCIES" và nhấp chuột phải vào nó để chọn tùy chọn "Quản lý gói Nuget". Hộp thoại Nuget Package sẽ xuất hiện, chọn bất kỳ gói Nuget nào bạn muốn cài đặt. Xem ảnh chụp màn hình bên dưới
3) Bây giờ xuất bản chức năng Azure của bạn, Visual Studio sẽ quản lý tất cả các cài đặt, v.v.
Phương pháp này sẽ chỉ hoạt động nếu bạn sử dụng Visual Studio 2017 15.4 trở lên, nếu không, bạn sẽ phải làm theo các cách khác như người khác giải thích.
Giả sử chúng ta muốn sử dụng SFTP
máy khách, là một thư viện bên ngoài, được lưu trữ ở đâu đó NuGet
.
Để thực hiện điều đó, theo đặc tả Chức năng Azure mới nhất , hãy làm như sau:
Mở phần tệp bên trong Hàm Azure của bạn và thêm tệp mới có tên function.proj
.
Để biết thêm thông tin, hãy tham khảo tài liệu của Microsoft .
Bên trong, function.proj
đặt Nuget
tham chiếu gói bằng cách sử dụng XML
cấu trúc (cùng loại cấu trúc mà bạn có thể tìm thấy bên trong *.csproj
tệp nếu bạn tạo một dự án cục bộ với Visual Studio và cài đặt một số NuGet
gói vào đó).
Tiếp theo, hãy bao gồm tham chiếu thư viện cho dự án:
Điều cần thiết ở đây là bạn nên cung cấp một đường dẫn đầy đủ đến thư viện, như trong ví dụ bạn có thể thấy là: "D:\home\site\wwwroot\bin\your_custom_library.dll"
Cuối cùng, mở phần Nhật ký và lưu mã. Sau một thời gian, bạn sẽ thấy NuGet
nhật ký khôi phục gói.
Lưu ý: các bản ghi này cũng có thể xuất hiện khi lưu function.proj
tệp hoặc khi chạy dự án.
Trong trường hợp nếu thư viện vẫn xuất hiện dưới dạng không xác định, hãy thử thêm nó Dll
theo cách thủ công vào thư mục bin bằng cách sử dụng Azure Cloud explorer từ Visual Studio .
function.proj
, vị trí của tập lệnh dll
sẽ xuất hiện trong phần Nhật ký sau một khoảng thời gian. Đôi khi bạn cần tải lại trang cho Chức năng Azure một lần nữa, đôi khi nhấn nút "Chạy" để xem cài đặt gói NuGet và cả vị trí. Vui lòng kiểm tra những gì đang in trong phần Nhật ký làm vị trí và thử đặt nó.
Lưu ý rằng định dạng .csproj mới trong Visual studio 2017 cũng được hỗ trợ. Nếu bạn tạo dự án của mình dưới dạng Dự án Web ASPNET, thời gian chạy Hàm Azure tải xuống tất cả các gói nuget cần thiết trước khi xây dựng dự án của bạn.