我正在使用Visual Studio编写包含多个Azure功能的类库。定时器和队列触发功能的组合。如果我正在处理其中一个函数并且只想调试它,我必须注释掉其他函数以防止它们执行。有没有办法轻松指出我只想在本地调试时执行整个函数集的子集?
你可以使用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}");
}
您可以配置要在host.json中加载哪些函数(full spec here.)具体来说,您需要定义顶级函数属性:
{
"functions": [ "QueueProcessor", "GitHubWebHook" ]
}
(注意,这仅供本地使用;您需要对已发布的函数使用function.json disabled属性。)
您可以使用由local.settings.json文件中的settingName控制的DisableAttribute来装饰您的函数。
以下是一个例子:
[QueueTrigger("%queueName%", Connection = "queues"), Disable("MyFuncABC")]ProcessMessage msg,