我正试图围绕我们应该如何构建Azure功能。
我喜欢构建响应事件的无服务器,紧凑,单功能应用程序的想法。
以下是我遇到的问题:
此时,我看到的唯一选择是将代码“复制并粘贴”到新的Azure Functions项目中,并在没有任何DI的情况下使用它。
这似乎违背了“最佳做法”。那么除了创建单片代码或等到Azure Functions支持.NET Core和DI之外,还有什么解决方案。
我以为我可以使用针对.NET Framework的常规Azure Functions项目中的.NET Standard类库。毕竟,.NET Standard的想法是“标准化”事物。我在SO上开了几个帖子。我正在提供链接,以便您可以看到我遇到的问题:
Using .NET Core 2.0 Libraries in WebJob Targeting .NET Framework 4.7
No parameterless constructor error in WebJobs with .NET Core and Ninject
P.S。我以前的帖子指的是WebJobs。这是B计划的方法,因为在支持.NET Core和DI等事情时,WebJobs似乎比Azure Functions领先半步。最后,我想构建一些可以使用我在.NET Standard 2中构建的类库的Azure函数。
此外,我之前的帖子提到我的类库以.NET Core 2.0为目标。从那时起,我将它们转换为.NET Standard 2,它实际上并没有太多用处。我这样做是为了让我真正符合.NET Standard 2。
答案 0 :(得分:6)
一个问题是Visual Studio有一个过时的Functions Core工具版本。在此问题得到解决之前,您可以通过以下方式解决问题:
npm install -g azure-functions-core-tools
[YourUserName]
):C:\Users\[YourUserName]\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.exe
host start
$(TargetDir)
现在当你从VS运行时,你将使用npm工具而不是VS软件包附带的旧工具。
答案 1 :(得分:1)
.NET Standard 2支持正在进行中,请参阅this github issue。