Visual Studio Azure 函数发布 function.json

Visual Studio Azure Function Publishing function.json

我是 Azure Functions 的新手,正在尝试将它们与 Blob 存储结合使用。

我已经下载了 Visual Studio 2017 预览版,它使我能够创建 Azure Functions 项目模板 (https://marketplace.visualstudio.com/items?itemName=AndrewBHall-MSFT.AzureFunctionToolsforVisualStudio2017)

然后按照这个例子https://blogs.msdn.microsoft.com/webdev/2017/05/10/azure-function-tools-for-visual-studio-2017/我可以在 VS 中创建一个新函数,然后发布到 Azure。

当我查看 Azure 时,我可以看到我的新函数,但它只显示 function.json 文件中的 json。

所以当我的函数代码只是

时这工作正常
public static void Run([BlobTrigger("images/{name}", 
    Connection = "fakename_STORAGE")]Stream myBlob, string name, TraceWriter log)

但是,当我想开始尝试输出时,我更改了我的代码以包含 out string myOutputBlob

public static void Run([BlobTrigger("images/{name}", 
    Connection = "fakename_STORAGE")]Stream myBlob, string name, out string myOutputBlob, TraceWriter log)

然后发布到 Azure,我看到一个错误:

Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'myOutputBlob' to type String&. Make sure the parameter Type is supported by the binding.

我可以解决这个问题,更新 Azure 上的 function.json 文件以包含更多信息,

但是每次我发布到 Azure 时,这个文件都会被覆盖。

我已经尝试将 function.json 文件添加到我的项目中,该文件与所需的配置相匹配,但这不起作用。我错过了什么吗?

如何确保 function.json 文件不会每次都被覆盖?我需要配置我的项目以允许我管理文件吗?

您必须使用属性修饰您的输出参数以配置您需要的输出绑定类型:

public static void Run(
    [BlobTrigger("images/{name}", Connection = "fakename_STORAGE")]Stream myBlob, 
    string name, 
    [Blob("images/copy-{name}", Connection = "fakename_STORAGE")]out string myOutputBlob, 
    TraceWriter log)

这将在发布期间在您的 function.json 中添加所需的行。