且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Azure函数中使用NuGet包?

更新时间:2023-02-08 22:53:18

是的!尽管Azure Functions门户目前不提供添加和管理NuGet程序包的机制,但是运行时支持NuGet引用,并会确保在编译和执行函数时正确使用它们.

Yes! Although the Azure Functions portal does not currently provide a mechanism to add and manage NuGet packages, the runtime supports NuGet references and will make sure they are correctly used when compiling and executing your functions.

为了定义依赖关系,您需要使用必需的NuGet包引用创建一个Project.json文件.这是一个添加对Microsoft.ProjectOxford.Face版本1.1.0的引用的示例:

In order to define your dependencies, you need to create a Project.json file with the required NuGet package references. Here is an example that adds a reference to Microsoft.ProjectOxford.Face version 1.1.0:

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

Azure Functions门户提供了一种方便的方法来管理您的功能文件,我们可以使用该方法来创建(或上传)我们的project.json:

The Azure Functions portal provides a convenient way to manage your function files, which we can use to create (or upload) our project.json:

  1. 在函数的 develop 部分中,单击查看文件
  2. 单击选项以创建(如果您的计算机上先前已创建project.json文件,也可以单击该选项以上传文件
  3. 命名文件project.json并定义您的程序包引用(您可以将上面的示例用作模板).
  1. In the function's develop section, click on view files
  2. Click on the option to create a file (you can also click on the option to upload a file if you have a previously created project.json file on your machine
  3. Name the file project.json and define your package references (you can use the example above as a template).

程序包还原过程将开始,您应该在日志窗口中看到类似于以下内容的输出:

The package restore process will begin and you should see output similar to the following in your log window:

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包中定义的类型.

As expected, the Azure Functions runtime will automatically add the references to the package assemblies, so you DO NOT need to explicitly add assembly references using #r "AssemblyName", you can just add the required using statements to your function and use the types defined in the NuGet package you've referenced.

由于Azure功能是基于App Services构建的,因此作为上述步骤的替代方法,您还可以访问标准Azure Web Apps(Azure网站)可用的所有出色部署选项.

Since Azure Functions is built on top of App Services, as an alternative to the steps above, you also have access to all the great deployment options available to standard Azure Web Apps (Azure Websites).

以下是一些示例:

为了使用App Service编辑器(摩纳哥)直接从浏览器直接管理文件,

In order to manage your files directly from your browser by using the App Service Editor (Monaco):

  • 在Azure Functions门户上,单击Function app settings
  • 高级设置部分下,点击Go to App Service Settings
  • 单击Tools按钮
  • 开发下,点击应用服务编辑器
  • 将其旋转On(如果尚未启用),然后单击Go
  • 加载后,将project.json文件拖放到函数的文件夹(以函数命名的文件夹中).
  • On the Azure Functions portal, click on Function app settings
  • Under the Advanced Settings section, click on Go to App Service Settings
  • Click on the Tools button
  • Under Develop, click on App Service Editor
  • Turn it On if it is not already enabled and click on Go
  • Once it loads, drag-and-drop your project.json file into your function's folder (the folder named after your function.
  • 导航至:https://<function_app_name>.scm.azurewebsites.net
  • 点击调试控制台> CMD
  • 导航到D:\home\site\wwwroot\<function_name>
  • Project.json文件拖放到文件夹中(在文件网格上)
  • Navigate to: https://<function_app_name>.scm.azurewebsites.net
  • Click on Debug Console > CMD
  • Navigate to D:\home\site\wwwroot\<function_name>
  • Drag-and-drop your Project.json file into the folder (onto the file grid)
  • 按照说明此处配置FTP
  • 连接后(按照上面的说明进行操作),将您的Project.json文件复制到/site/wwwroot/<function_name>

  • Follow the instructions here to get FTP configured
  • Once connected (following the instructions above) copy your Project.json file to /site/wwwroot/<function_name>

有关其他部署选项,请参阅: https://azure.microsoft.com/zh-CN/documentation/articles/web-sites-deploy/

For additional deployment options, see: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/

如果您在Function App未运行时启用了持续集成并使用project.json文件部署了功能,则一旦Function App初始化,程序包还原将自动发生.建议您不要project.lock.json文件添加到源代码管理中.

If you enable continuous integration and deploy your function with a project.json file when your Function App is not running, the package restore will happen automatically once your Function App initializes. It is recommended that you do not add your project.lock.json file to source control.

功能也可以作为预编译的程序集部署,在这种情况下,所有依赖项管理都在Visual Studio中处理.此选项可以用作任何版本的Visual Studio上的标准类库,也可以使用

Functions may also be deployed as pre-compiled assemblies, and in this case, all dependency management is handled in Visual Studio. This option may be used as standard class libraries on any version of Visual Studio or by using the Visual Studio 2017 Azure Functions Tools.