最近我一直在开发大量异步代码,并遵循一般建议,我正在实现异步库代码,以便它们在等待的任务上调用.ConfigureAwait(false);
。我敢肯定,任何曾经做过此事的人都可以与它的重复性有关,所以我让自己开始研究自己的代码段,以便可以通过几次按键操作将其半自动化。
我想出的一切就变得很简单,但是不幸的是,Visual Studio不允许我按我期望的那样使用它。这是我的代码段:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>ConfigureAwait(false) call</Title>
<Shortcut>caf</Shortcut>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[.ConfigureAwait(false);$end$]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
当我尝试将其插入(例如)一个空的方法主体时,或在任何“完成的”代码段之后(例如在其末尾带有;
的赋值),它都会正确扩展,但是当我尝试将其插入实际上有意义的位置时,例如未完成的异步方法调用,如下所示:
await MyMethodAsync()/* would type "caf" and tab-tab" */
然后什么也没有发生。在此位置出现时,IntelliSense弹出窗口也不会列出任何其他代码段,因此我强烈怀疑VS只是未编码为在某些词法上下文(如此)中支持代码段。但是,这只是一个假设-有人可以确认这是否可能吗?