在我的 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 门户中。
我的问题:
可以在 repoUrl 或 Microsoft.sourcecontrols 资源中指定,我想使用某种方法创建 Azure 函数,但从指定的子文件夹中创建?这样,我就解决了,只需将azure function项目复制到特定文件夹中,然后开始在azure function中使用它们即可。
是否可以指定我想要在部署过程中使用 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/