我在C#中有一个PS Cmdlet - 它的ProcessRecord函数如下所示:
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var cert = await keyClient.GetCertificateAsync(keyVaultCertUri);
我的问题是当我从我的Cmdlet中调用任何KeyVaultClient API时,VS只是结束调试会话。 “调试”窗口中没有有用的输出;没有例外;缥缈。调试会话突然结束。
如何调试正在进行的操作以便成功进行此调用?
问题是,当从Cmdlet继承时,ProcessRecord不能是异步的。如果直接在ProcessRecord中执行await,它将立即结束处理。因此,必须在ProcessRecord中使任何异步调用同步才能执行。
在调试方面,我发现VS中没有证据表明存在问题。一位同事在PowerShell Git页面上发现了一个描述此问题行为的未解决问题。