Visual Studioスニペット

かつて私はCodeRushのファンでした。 彼は、オブジェクトのプロパティを作成したり、ループの本体を構成するために、2回または3回のキーストロークを許可しました。 研究所の実験コードを入力することは喜びでした。



その後、C#3.0を備えた2008スタジオが登場し、自動プロパティがありました。 CodeRushが私が望んでいたことをしていないとき、私はもうそれが好きではありませんでした。 これには短いショットキャットが貢献します。 そしてある時点で、私はそれを使うことを拒否しました。 個人的にコードを入力した場合よりも、このツールで苦労しました。



その後、スタジオスニペットについて知りました。 実際、これらはCodeRushの同じコードテンプレートであり、より単純なもののみです。 for、foreach、prop、exceptionなどの標準的なものがあります。 テンプレートを開くには、テンプレートの名前を入力してTabキーを押す必要があります。 オートコンプリートを使用する場合、テンプレートの名前の一部を記述してから、TAB、TABを記述できます。



しかし、最も魅力的なのは、独自のテンプレートを作成できることです。 ただし、手動では、これを行わない方が良いです。 テンプレートはXMLで保存され、手動で編集することは困難です。



ただし、スタジオにはテンプレートを作成および編集できる追加機能があります-

http://www.codeplex.com/SnippetDesigner 編集は次のとおりです。







置換されたすべてのフィールドが強調表示され、設定はドキュメントプロパティとパラメーターのテーブルで行われます。 構文の強調表示はありませんが、XMLを編集するよりも桁違いに優れています。



新しいスニペットをスタジオに接続するには、作成する必要があります。 これは、コンテキストメニュー(選択したコード用)を使用するか、既存のスニペットファイルをコピーすることで実行されます。 テンプレートの場所は、Tools \ Code Snippets Managerで確認できます。 カスタムテンプレートは、デフォルトで\ Documents \ Visual Studio 2008 \ Code Snippets \にあります。 ファイルをコピーしてテンプレートを作成する場合、XMLのShortcutプロパティを変更する必要があります。 スタジオまたはSnippetDesignerのいずれかがスニペットをキャッシュし、同じショートカットでスニペットを保存すると、変更が失われる可能性があります。



最近作成したWPFプロジェクトで作業中に作成したカスタムスニペットの例は、少し低くしました。 これらのテンプレートにより、数時間の定期的な入力とデバッグが節約されました。



通知のあるプロパティ:



/// <summary>

/// $comment$

/// </summary>

/// <remarks>

///

/// </remarks>

private $type$ m_$property$;



/// <summary>

/// $comment$

/// </summary>

public $type$ $property$

{

get

{

return m_$property$;

}

set

{

m_$property$ = value ;

OnPropertyChanged( "$property$" );

}

}








遅延初期化のプロパティ:



/// <summary>

/// $comment$

/// </summary>

/// <remarks>

///

/// </remarks>

private $type$ m_$property$;



/// <summary>

/// $comment$

/// </summary>

public $type$ $property$

{

get

{

if ( m_$property$ == null )

{

m_$property$ = null ;

}



return m_$property$;

}

}








MS Prismチーム:



#region Command - $name$



/// <summary>

/// $comment$

/// </summary>

public DelegateCommand <$type$> $name$Command { get ; private set ; }



/// <summary>

/// $comment$

/// </summary>

private void $name$( $type$ parameter )

{

// TODO:

// $name$Command = new DelegateCommand<$type$>( $name$, Can$name$ );



// TODO: Shortcuts, ReturnKeyAssistants

}



/// <summary>

/// $comment$

/// </summary>

/// <returns>true </returns>

private bool Can$name$( $type$ parameter )

{

// TODO:

//return Errors.Count == 0;



return true ;

}



#endregion







All Articles