问题描述
使用 Azure函数,我可以在我的C#函数中引用和使用NuGet软件包吗?
Using Azure Functions, can I reference and use NuGet packages in my C# function?
推荐答案
是的!尽管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
:
- 在函数的 develop 部分中,单击查看文件
- 单击选项以创建(如果您的计算机上先前已创建
project.json
文件,也可以单击该选项以上传文件 - 命名文件
project.json
并定义您的程序包引用(您可以将上面的示例用作模板).
- In the function's develop section, click on view files
- 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 - 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 onGo
- 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上的标准类库,也可以使用 Visual Studio 2017 Azure函数工具.
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.
这篇关于如何在Azure函数中使用NuGet包?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!