azure - 在azure函数中包含dll并通过ARM模板将代码移动到资源组中

标签 azure azure-functions azure-resource-manager

在我的 ARM 模板中,我有一段代码:

  "name": "[variables('logicappname')]",
  "type": "Microsoft.Logic/workflows",
  "location": "[resourceGroup().location]",
  "apiVersion": "2016-06-01",
  "dependsOn": [
    "[resourceId('Microsoft.Web/connections', variables('servicebusConnectionName'))]",
    "[resourceId('Microsoft.Web/sites/sourcecontrols', variables('functionAppName'), 'web')]"
  ],
  "tags": {
    "displayName": "display-name"
  },

资源数组中:

    {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "sourcecontrols",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', variables('functionAppName'))]"
      ],
      "properties": {
        "RepoUrl": "[parameters('repoURL')]",
        "branch": "[variables('branch')]",
        "IsManualIntegration": true
      }
    }

variables('branch') = 'master-dev'

variables('repoUrl') = https://user:token@MYREPO.visualstudio.com/DefaultCollection/PROJECTNAME/_git/REPO

在我的存储库中,我有 azure 函数项目,其结构如下:

  • 函数-1、函数-1/function.json、函数-1/run.csx
  • 函数2、函数2/function.json、函数2/run.csx
  • .gitignore
  • .appsettings.json
  • 主机.json
  • local.settings.json
  • read_me.html
  • README.md

在这种情况下一切正常。

现在我需要在同一解决方案中创建几个新项目 - 核心、测试。

结构现在看起来像这样(让我们忽略测试项目):

  • 核心
  • 核心/属性/AssemblyInfo.cs
  • Core/bin/Debug/Core.dll
  • Core/Core.csproj
  • OrdersService.cs
  • 函数-1、函数-1/function.json、函数-1/run.csx
  • 函数2、函数2/function.json、函数2/run.csx
  • .gitignore
  • .appsettings.json
  • 主机.json
  • local.settings.json
  • read_me.html
  • README.md

一旦我有了包含一些代码的 Core.dll,我就可以将该 dll 包含在我的 function-1 (run.csx) 中:

#r ".\..\Core\bin\Debug\Core.dll"

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var service = Core.OrdersService.GetInstance();
    return req.CreateResponse(HttpStatusCode.OK, service.GetOrderHistory());
}

现在,当我将 Azure 功能部署到门户中(通过当前的 Arm 模板)时,我无法完成部署。我有一个错误,函数“function-1”不存在。当我转到门户时,情况是一样的 - Azure 函数已创建,但在函数内部,没有任何方法。

附注本地更改运行良好 - 我可以调用端点 http://localhost:7071/api/function-1 (在调试和正常模式下)。

我猜,问题出在“Core”文件夹上,它与 azure 函数/方法不匹配,通过这种方式,我无法将我的存储库发布到 azure 门户中。

我的问题:

  1. 可以在 repoUrl 或 Microsoft.sourcecontrols 资源中指定,我想使用某种方法创建 Azure 函数,但从指定的子文件夹中创建?这样,我就解决了,只需将azure function项目复制到特定文件夹中,然后开始在azure function中使用它们即可。

  2. 是否可以指定我想要在部署过程中使用 VSO 存储库中的某些特定文件/文件夹到 azure 函数?

最佳答案

我的第一个建议是您可以只使用类库来处理所有事情。仅当您希望能够在门户中进行编辑时才需要 .csx,但您可以使用普通的 .dll 来实现您的功能。查看这篇博文:https://blogs.msdn.microsoft.com/webdev/2017/11/15/improvements-to-azure-functions-in-visual-studio/

Git 部署将复制所有文件,因此不确定为什么它不包括所有文件。

如果您可以分享从部署中看到的确切错误日志,这将有助于调试此特定情况,但我认为新的 VS 工具将为您提供比仅使用 C# 脚本更清晰的体验。

关于azure - 在azure函数中包含dll并通过ARM模板将代码移动到资源组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47438218/

相关文章:

Azure计时器触发函数默认计时器

Azure cron 管道始终运行

azure - 建议 azure 一般实践

c# - Azure函数版本2.0-应用程序blobTrigger不工作

powershell - 检查输入 blob 是否存在

azure - 如何在 ARM 模板中获取用户分配身份的客户端 ID?

azure - 具有 "Contributor"和 "User Access Administrator"角色的用户与具有 "Owner"角色的用户相同吗?

azure - ARM 中存储队列的专用端点

python - 可以在 Azure HDInsight 中使用 Hadoop Streaming API 运行 python 代码吗?

azure - 使用托管服务标识对 Azure Function 进行授权以从 Azure 存储容器获取 blob