ReSharper 2018.3ヘルプ

言語インジェクション

文字列リテラル(およびXMLに似た言語のタグまたは属性)に、正規表現、HTMLなどの他の正式な言語が含まれている場合、ReSharperはコードインスペクションクイック・フィックスコード補完コンテキストアクション、およびこの抜粋のすぐ内側には、この言語に固有の他の多くの機能があります。

ReSharperは、C#、JavaScript、およびTypeScriptの文字列で、次の埋め込み言語をサポートしています。

ReSharperは、自動と手動の2種類の言語注入を処理できます。

別の言語ファイルの言語抜粋が明白に検出される場合があります。HTMLの style 属性の <script></script> タグまたはCSS内のJavaScript。このような場合、ReSharperは組み込み言語を自動的に検出します。

必要に応じて、ReSharperオプションのコード編集 | 言語インジェクションページで、特定の場合に自動言語インジェクションを無効にすることができます。

文字列リテラル内の正式な言語が自動的に検出されない場合、次のいずれかの方法でリテラルに特定の言語を含むものとして手動でマークすることができます。

  • コンテキストアクションを使用します。実際にはReSharperに文字列に対応するシンボル範囲をマークし、この範囲を内部データベースに保存し、格納ファイルの変更に合わせて追跡します。この方法は非常に迅速かつ簡単ですが、VCSマージなどの外部ファイルの変更後に範囲が失われる可能性があり、このようにマークされたインジェクションはローカルでのみ追跡されます。

  • JetBrains.Annotations[RegexPatternAttribute] で正規表現を受け付けるメソッドのパラメータをマークします。これは、パラメータの正規表現に推奨される方法です。

  • 文字列リテラルの前にコメント /*language=javascript|html|regexp|jsregexp|json|css|xml*/ を置きます。確かに、これらのコメントは入力する必要があり、それらをあなたのコードを汚染していると考えることさえできます。しかし、彼らはあなたのインテンションをあなたのコードを読むすべての人に明らかにします、彼らは迷子になりません、そしてReSharperであなたのコードを開く誰もがマークされた文字列で同じ機能を得るでしょう。
    ちなみに、コメントのフォーマットはJetBrains Rider(英語)と互換性がありますとIntelliJプラットフォームベースのIDE(英語)

    Language injections in C# strings with comments
    コメントに prefix=postfix= パラメータを使用することもできます。例:文字列にCSSプロパティーのリストのみが含まれている場合、その前に //language=css prefix=body{ postfix=}というコメントを追加できます。これによりReSharperは文字列を有効なCSSとして解決します。

この機能は、次の言語とテクノロジでサポートされています。

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is available

Feature is available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

C#の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語によるReSharperの対応するトピックを参照してください。

最終更新日: 2019年1月21日

関連事項