func.exe如何识别VS2019运行的特定函数?



假设http触发器。从VS2019运行时,VS2019运行命令

C:Users<user>AppDataLocalAzureFunctionsToolsReleases1.10.0clifunc.exe host start --port 7071 --pause-on-error

这意味着该命令不提供有关任何函数的任何信息。VS2019 也运行命令

C:Users<user>.nugetpackagesmicrosoft.net.sdk.functions1.0.24toolsnet46Microsoft.NET.Sdk.Functions.Generator.exe "....binDebugnet461binAzureFunction.dll " "....binDebugnet461 "

这显然提供了有关函数的信息。生成器.exe似乎创建了文件函数.json 在项目文件夹中。但是func.exe是怎么知道的呢?

我直接从 VS2019 外部的开发人员命令窗口.exe玩了一点 func。

首先,func.exe 使用环境的 CurrentDirectory,因此 VS2019 必须在运行 func 之前显式设置它.exe

其次,也是最重要的,func.exe 从 host.json 所在的项目根目录内部扫描所有子文件夹,并查找名为 function.json 的所有文件。当VS2019运行func时.exe它将CurrentDirectory设置为: 已经包含 bin\Debuget461 的路径,表示 func.exe 不查找任何 bin\Debug

找到.../fname/function.json的名称fname成为Function的名称,例如,这里的函数名称变为"Function8",因为func.exe从设置为...\bin\Debuget461的CurrentDirectory运行

...binDebugnet461Function8function.json

这里的函数名称也变成了"Function8",即使没有 \bin\Debug\ 作为 CurrentDirectory 的一部分。

...Function8function.json

还有其他因素,例如函数是实际编译为 *.dll 还是作为源代码 *.csx 提供。所有这些都没有记录在案,它应该。

'func.exe' 由 Azure Function Core Tools 提供。 这将查找 bin/Debug 下的任何文件夹中是否存在 function.json。如果文件夹下有多个函数,"func.exe"将运行所有这些函数。(执行func.exe取决于function.json。如果函数.json不存在,函数将不会运行(

所以'func.exe'无法识别特定的功能。"func.exe"似乎识别VS 2019中特定功能的原因是,当您使用VS 2019运行该功能时,func.exe正在bin/Debug的子文件夹中查找function.json,并且在子文件夹中只有一个json文件。

最新更新