Azure功能结构

Sam*_*Sam 4 azure azure-webjobs .net-core azure-functions .net-standard

我试图围绕我们应该如何构建Azure功能.

我喜欢构建响应事件的无服务器,紧凑,单功能应用程序的想法.

以下是我遇到的问题:

  1. 我有很好的.NET Standard 2类库,可以处理我所有的"后端需求",即处理带有Cosmos Db,Azure表存储,Azure SQL,Redis,Azure存储的CRUD操作.无论我做什么,我都无法将这些类库集成到Azure Functions项目中.更多细节如下.
  2. 此外,在Azure Functions项目中获取依赖项注入已被证明是一项非常重要的任务 - 尤其是我上面提到的类库.

此时,我看到的唯一选择是将代码"复制并粘贴"到新的Azure Functions项目中,并在没有任何DI的情况下使用它.

这似乎违背了"最佳做法".那么除了创建单片代码或等到Azure Functions支持.NET Core和DI之外,还有什么解决方案.

我以为我可以使用面向.NET Framework的常规Azure Functions项目中的.NET Standard类库.毕竟,.NET Standard的想法是"标准化"事物.我在SO上开了几个帖子.我正在提供链接,以便您可以看到我遇到的问题:

在WebJob中使用.NET Core 2.0库定向.NET Framework 4.7

使用.NET Core和Ninject的WebJobs中没有无参数构造函数错误

PS我以前的帖子指的是WebJobs.这是B计划的方法,因为在支持.NET Core和DI等事情时,WebJobs似乎比Azure Functions领先半步.最后,我想构建一些可以使用我在.NET Standard 2中构建的类库的Azure函数.

此外,我之前的帖子提到我的类库以.NET Core 2.0为目标.从那时起,我将它们转换为.NET Standard 2,它实际上并没有太多用处.我这样做是为了让我真正符合.NET Standard 2.

Dav*_*bbo 6

一个问题是Visual Studio有一个过时的Functions Core工具版本.在此问题得到解决之前,您可以通过以下方式解决:

  • 通过运行安装最新的via npm npm install -g azure-functions-core-tools
  • 在VS中的Function App中,转到"属性"
  • 转到Debug,然后单击Profile下的New ....
  • 将新配置文件命名为FunctionsNpm
  • 将可执行文件设置为(替换[YourUserName]):C:\Users\[YourUserName]\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.exe
  • 将参数设置为 host start
  • 将工作目录设置为 $(TargetDir)
  • 在工具栏中,查找绿色三角形图标以将当前配置文件更改为刚刚创建的配置文件: 在此输入图像描述

现在当你从VS运行时,你将使用npm工具而不是VS软件包附带的旧工具.