Сделать фрагмент кода VS вставляемым сразу после закрывающей скобки - PullRequest
0 голосов
/ 30 апреля 2019

Я недавно разработал много асинхронного кода и, следуя общим рекомендациям, я реализую свои коды асинхронной библиотеки, чтобы они вызывали .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 просто не кодируется для поддержки фрагментов в определенных лексических контекстах, таких как этот. Однако это всего лишь предположение - кто-то может подтвердить, возможно ли это / невозможно?

...