2015-10-01 21 views
7

Ho uno snippet di codice string.Format(@"") con una scelta rapida sf che inserisce lo snippet e posiziona il cursore tra le due virgolette doppie. Davvero conveniente Posso normalmente usarlo, naturalmente, semplicemente digitando sf e scheda di colpire due volte:Il collegamento snippet di codice non funziona ovunque

enter image description here

Tuttavia, ho appena scoperto che il collegamento non funziona in tutte le sedi. Per esempio, se sto costruendo questa dichiarazione:

if(true) throw new FormatException() // <-- cursor is inside these parens 

e mi ha colpito sf, il collegamento non viene visualizzato nel menu IntelliSense, e se ho colpito Tab due volte, non genera snippet. Perché?

Ho provato a cercare "il collegamento di snippet di codice C# a volte non funziona", "il collegamento di snippet di codice C# non funziona", "lo snippet di codice dello studio visivo a volte non funziona" tra gli altri e posso " trovare qualcosa di utile a riguardo

EDIT: Ecco la definizione frammento:

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <SnippetTypes> 
     <SnippetType>Expansion</SnippetType> 
     </SnippetTypes> 
     <Title>String.Format with @</Title> 
     <Author>Rory</Author> 
     <Description> 
     </Description> 
     <HelpUrl> 
     </HelpUrl> 
     <Shortcut>sf</Shortcut> 
    </Header> 
    <Snippet> 
     <Declarations> 
     <Literal Editable="true"> 
      <ID>anchor</ID> 
      <ToolTip> 
      </ToolTip> 
      <Default> 
      </Default> 
      <Function> 
      </Function> 
     </Literal> 
     </Declarations> 
     <Code Language="csharp" Delimiter="$" Kind="method body"><![CDATA[string.Format(@"$selected$$end$")]]></Code> 
    </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 
+0

Qualche snippet predefinito carica il menu Intellisense? Prova "prop" nello stesso posto –

+0

@gwilliams negativo –

+0

Che aspetto ha la definizione del tuo frammento? – jessehouwing

risposta

2

Secondo il docs l'attributo Tipo determina dove è possibile utilizzare il frammento - è stato specificato "metodo del corpo" e, probabilmente, è necessario specificare "qualsiasi "

1

ho appena creato e testato (in VS2013 e VS2015) la mia versione del frammento e funziona come previsto:

enter image description here

Questo è ciò che sembra:

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <CodeSnippet Format="1.0.0"> 
    <Header> 
     <SnippetTypes> 
     <SnippetType>Expansion</SnippetType> 
     </SnippetTypes> 
     <Title>SnippetFile1</Title> 
     <Author>[email protected]</Author> 
     <Description> 
     </Description> 
     <HelpUrl> 
     </HelpUrl> 
     <Shortcut>sf</Shortcut> 
    </Header> 
    <Snippet> 
     <Code Language="csharp" Delimiter="$"><![CDATA[string.Format(@"$end$")]]></Code> 
    </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 

per creare e modificare Snippets, the Snippet Designer is a must have.

+0

Grazie, devo prendere un treno ora ma lo confronterò da vicino al mio frammento (vedi la domanda modificata). –

+1

Ho persino provato il tuo snippet, non funziona. VS 2013. A proposito, ho creato il mio con designer di frammenti. –

+0

Eventuali aggiornamenti di Visual Studio installati, sono sull'aggiornamento 2013 5? Qualche plugin che possa interferire con gli snippet? Come Resharper, CodeRush o qualcosa di simile? – jessehouwing

Problemi correlati