Fab*_*nte 137

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

为了定义依赖项,您需要创建一个Project.json包含所需NuGet包引用的文件.这是一个添加对Microsoft.ProjectOxford.Face1.1.0版本的引用的示例:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

正如所料,Azure Functions运行时将自动添加对程序包程序集的引用,因此您不需要使用显式添加程序集引用#r "AssemblyName",只需将所需using语句添加到函数中并使用NuGet程序包中定义的类型即可.参考.

其他部署选项

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

这里有些例子:

使用App Service Editor(摩纳哥)

要使用App Service Editor(Monaco)直接从浏览器管理文件:

  • 在Azure Functions门户上,单击 Function app settings
  • 在" 高级设置"部分下,单击Go to App Service Settings
  • 单击Tools按钮
  • Develop下,单击App Service Editor
  • On如果它尚未启用则转动它并单击Go
  • 加载后,将project.json文件拖放到函数的文件夹(以函数命名的文件夹)中.

使用SCM(Kudu)端点

  • 导航: https://<function_app_name>.scm.azurewebsites.net
  • 单击Debug Console> CMD
  • 导航 D:\home\site\wwwroot\<function_name>
  • Project.json文件拖放到文件夹中(放到文件网格中)

FTP

持续集成

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

预编译的程序集

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

  • @JustInChronicles,实际上是一个文件夹.`project.json`位于函数文件夹中,该文件夹是脚本根目录的子文件夹.脚本根映射到Azure中的`wwwroot`文件夹. (2认同)

Jam*_*oke 28

这个帖子对我帮助很大 - 但我仍然浪费了几个小时试图让Project.json工作 - 但无济于事.

如果在版本2.x中创建Azure功能,则需要以不同的方式执行此操作.

按照说明创建一个新文件,但将其命名为function.proj.该文件具有XML结构,用于通过Nuget导入库.

这是我为.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>
Run Code Online (Sandbox Code Playgroud)

保存后,您应该看到控制台更新说明软件包已安装.这真的没有很好的记录,我花了几个小时来找到它.所以我希望这有助于某人.

  • 感谢您的发布,这是很大的帮助。[此处](https://docs.microsoft.com/zh-cn/dotnet/core/tools/project-json-to-csproj)是包含更多信息的链接。 (2认同)

Suj*_*ngh 12

您可以在Azure功能中使用Nuget包.最简单的方法是使用Visual Studio 2017 15.4,其中有Azure功能的模板.按照以下步骤

1)添加Azure功能项目:右键单击解决方案,然后选择添加新项目.转到CLOUD选项,您将找到"Azure Function"项目.

Azure功能

2)现在添加任何Nuget包都很棒.展开"DEPENDENCIES"并右键单击它以选择"Manage Nuget Packages"选项.将出现Nuget Package对话框,选择要安装的任何Nuget包.见下面的截图

3)现在发布您的Azure功能,Visual Studio将处理所有设置等.

只有在使用Visual Studio 2017 15.4或更高版本时,此方法才有效,否则您将不得不按照其他方式解释其他方式.


Ars*_*yan 8

假设我们要使用SFTP客户端,它是一个外部库,存储在NuGet.

为此,根据最新的Azure Functions规范,请执行以下操作:

  1. 打开Azure 函数中的文件部分并添加一个名为function.proj.

    在此处输入图片说明 有关详细信息,请参阅 Microsoft文档


  1. 在里面function.proj放置Nuget使用XML结构的包引用(*.csproj如果你使用Visual Studio创建一个本地项目并在其中安装一些NuGet包,你可以在文件中找到相同类型的结构)。

    在此处输入图片说明


  1. 接下来,让我们包含对项目的库引用: 在此处输入图片说明

    这里重要的是您应该提供库的完整路径,就像在示例中一样,您可以看到它是: "D:\home\site\wwwroot\bin\your_custom_library.dll"


  1. 接下来测试一些特定于库的代码: 在此处输入图片说明

  1. 最后,打开日志部分并保存代码。一段时间后,您应该会看到NuGet包恢复日志。 在此处输入图片说明

    注意:这些日志也可能在保存function.proj文件或运行项目时出现。


在情况下,如果库中仍然显示为未知的尝试添加它的Dll“手动S插入bin文件夹使用Azure的云资源管理器Visual Studio中

在此处输入图片说明