有没有办法在Visual Studio中本地调试时只允许运行azure函数的子集?

问题描述 投票:2回答:3

我正在使用Visual Studio编写包含多个Azure功能的类库。定时器和队列触发功能的组合。如果我正在处理其中一个函数并且只想调试它,我必须注释掉其他函数以防止它们执行。有没有办法轻松指出我只想在本地调试时执行整个函数集的子集?

visual-studio azure azure-functions
3个回答
2
投票

你可以使用Disable() attribute,但这并不比评论代码好多少:

public static void Run([TimerTrigger("0 */5 * * * *"), Disable()]TimerInfo myTimer, TraceWriter log)

您可以将Disable()属性与#if指令结合使用,但它会使您的代码混乱。只有在定义了DEBUG时才会应用Disable()属性。

如果处于释放模式,则以下函数将运行;如果处于调试模式,则将禁用此函数。

    [FunctionName("TimerFunction")]
    public static void Run([
        #if DEBUG 
            TimerTrigger("*/5 * * * * *"), Disable()
        #else
            TimerTrigger("*/5 * * * * *")
        #endif
        ]TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    }

3
投票

您可以配置要在host.json中加载哪些函数(full spec here.)具体来说,您需要定义顶级函数属性:

{
    "functions": [ "QueueProcessor", "GitHubWebHook" ]
}

(注意,这仅供本地使用;您需要对已发布的函数使用function.json disabled属性。)


0
投票

您可以使用由local.settings.json文件中的settingName控制的DisableAttribute来装饰您的函数。

以下是一个例子:

[QueueTrigger("%queueName%", Connection = "queues"), Disable("MyFuncABC")]ProcessMessage msg,
© www.soinside.com 2019 - 2024. All rights reserved.