当前位置: 首页 > 知识库问答 >
问题:

如何在我的Azure Functions中使用NuGet包?

张高义
2023-03-14

使用Azure Functions,我可以在我的C#函数中引用和使用NuGet包吗?

共有3个答案

丁德义
2023-03-14

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

1)添加Azure函数项目:右键单击解决方案并选择添加新项目。转到CLOUD选项,您将找到“Azure Function”项目。

2)现在可以添加任何Nuget包了。展开“依赖项”并右键单击它以选择选项“管理Nuget包”。Nuget Package对话框将出现,选择任何你想安装的Nuget包。见下面截图

3)现在发布你的Azure函数,Visual Studio将负责所有设置等。

此方法仅在您使用Visual Studio 2017 15.4或更高版本时才有效,否则您将不得不遵循其他人解释的其他方式。

弘承业
2023-03-14

这个线程对我帮助很大——但是我仍然浪费了几个小时试图让Project.json工作——没有用。

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

如上所述创建一个新文件,但将其命名为function.proj。

这是我为. 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>

保存后,您应该会看到控制台更新,说明正在安装软件包。这确实没有很好的记录,我花了好几个小时才发现这一点。所以我希望这能帮助别人。

韦熙云
2023-03-14

是啊!尽管Azure Functions portal目前不提供添加和管理NuGet包的机制,但运行时支持NuGet引用,并将确保在编译和执行您的函数时正确使用它们。

为了定义依赖项,您需要创建一个< code>Project.json文件,其中包含所需的NuGet包引用。下面是一个添加对< code>Microsoft的引用的示例。ProjectOxford.Face版本1.1.0:

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

Azure 函数门户提供了一种管理函数文件的便捷方法,我们可以使用它来创建(或上传)我们的 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.

正如预期的那样,Azure Functions运行时将自动添加对包程序集的引用,因此您不需要使用<code>#r“AssemblyName”</code>显式添加程序集引用,您只需使用</Codes>语句将所需的<code>添加到您的函数中,并使用您引用的NuGet包中定义的类型即可。

由于Azure Functions建立在应用服务之上,作为上述步骤的替代方案,您还可以访问标准Azure Web应用程序(Azure网站)可用的所有优秀部署选项。

以下是一些示例:

为了使用应用程序服务编辑器(摩纳哥)直接从浏览器管理您的文件:

    < li >在Azure功能门户上,单击< code >功能应用设置 < li >在“高级设置”部分,单击< code >转到应用服务设置 < li >单击< code >工具按钮 < li >在开发下,单击应用服务编辑器 < li >如果尚未启用,请将其< code >打开,然后单击< code >开始 < li >加载后,将< code>project.json文件拖放到您的函数文件夹中(该文件夹以您的函数命名。
  • 导航到:https://

> < li >按照此处的说明配置FTP < li>

连接后(按照上述说明),将您的< code>Project.json文件复制到< code>/site/wwwroot/

有关其他部署选项,请参阅: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。

 类似资料:
  • Azure Functions for Visual Studio Code Use the Azure Functions extension to quickly create, debug, manage, and deploy serverless apps directly from VS Code. Check out the Azure serverless community li

  • 我正在配置一个现有项目(dotnet core)以使用私有nuget存储库。我已经按照以下结构设置了我的项目: 项目1 如果我要运行“dotnet还原”命令,但在使用Visual Studio的构建(MSBuild)时不能恢复我的包。 我希望能够在使用Visual Studio的MSBuild时还原我的包。(不使用cli) 如果可能的话,我希望避免在生成之前使用msbuild的Exec任务运行do

  • 如果我单独打开其中一个项目,并使用Nuget Pacakge manager将Nuget包添加到Visual Studio中的项目中,它将添加到[PackageName]\Packages中。这也是我所期望的。 但是,如果我同时在visual Studio中打开两个项目,VS立即假设我需要一个“解决方案”,这很好,这基本上是VS的一个组织问题,但是现在包的添加方式发生了变化,第一个包仍然添加到[P

  • 我最近正在使用Azure管道,并且我的构建过程中有一个NuGet任务。此进度始终失败,因为 NuGet 源中没有名为“机器人实用性”的包。这是因为此包由我自己创建,并且仅存储在 Azure 项目中。 ##[错误]nuget命令失败,并出现退出代码(1)和错误(NU1101:找不到包BotUtive。源中不存在具有此ID的包:NuGetOrg 构建管道有可能到达Azure工件中的这个包吗?如果可以,

  • 在一个flink项目中,我使用一个case类click。 这个类填充了数据集,并且在日期为Java8的情况下可以很好地工作。在Java7环境中切换到org.joda(Version2.9)之后,对数据集中的click对象的调用不像以前那样执行。对click对象的date字段的某些函数的访问引发。这些函数的例子有等。我能够确保click类的日期字段不为空。我怀疑joda时间库与kryo序列化的交互不

  • 问题内容: 我的一部分代码获得了OuterHTML属性 因此我可以进行涉及解析的内容。 虽然在Firefox上的javascript中没有OuterHTML属性,但我找不到其他方法来获取此字符串。有想法吗? 问题答案: 弄清楚了! getAttribute不起作用,但是getAttributeNode很好; D