やや、隠し機能的なものです。
文字列(逐語的文字列リテラルや、生文字列リテラルも含む)は、基本的に1色だけの色付け(Visual Studio の初期設定では、茶色系の色)となりますが、C#のソースジェネレータを記述する際や、JSONデータを書く際、正規表現を書く際に、エディタ内でシンタックスハイライトがないと可読性が低くなります。
そこで Visual Studio の特殊機能として、文字列の前に /* lang=言語名 */ というコメントアウトを記述することで、その言語のシンタックスハイライトがされるようになります。
※ /*lang=言語名*/という風に間の半角スペースを詰めても、/* lang = 言語名 */という風に間に半角スペースを入れても、認識されます。また、大文字・小文字はどちらでも問題ありません。


/* lang=C# */ を付与することで、生文字リテラル中で、C# コードのハイライトができます。
これは、ソースジェネレータによって生成されるコードを自前で実装(記述)する際に便利です。
※ VS 2022 では、/* lang=C#-test */ と、末尾に -test を付ける必要があります。


/* lang=json */ を付与することで、文字列や生文字リテラルの中で、明示的に JSON データのハイライトができます。
※ Visual Studio 2022 以降から、特に付与しなくても自動的にハイライトされます。


/* lang=xml */ 文字列や生文字リテラルの中で、XML マークアップのハイライトができます。

/* lang=regex */ または /* lang=regexp */ を付与することで、逐語的文字列リテラルの中で、正規表現のハイライトができます。


/* lang=composite */ を付与することで、文字列や生文字リテラルの中で、複合書式指定文字列についてハイライトができます。
※ Visual Studio 2026 以降から、特に付与しなくても自動的にハイライトされます。

/* lang=guid */ を付与することで、文字列や生文字リテラルの中で、複合書式指定文字列についてハイライトができます。
※ Visual Studio 2026 以降から、特に付与しなくても自動的にハイライトされます。

/* lang=uri */ を付与することで、文字列や生文字リテラルの中で、URI についてハイライトができます。
※ Visual Studio 2017 以降から、特に付与しなくても自動的にハイライトされます。

Microsoft.NET.Sdk.Web ( ASP.NET Core ) プロジェクトにて、/* lang=route */ を付与することで、文字列の中で、ルート(ルーティング)のハイライトができます。

JetBrains IDE 独自機能
/* lang=javascript */ を付与することで、文字列や生文字リテラルの中で、JavaScript スクリプトのハイライトができます。
JetBrains IDE 独自機能
/* lang=html */ を付与することで、文字列や生文字リテラルの中で、HTML マークアップのハイライトができます。
JetBrains IDE 独自機能
/* lang=css */ を付与することで、文字列や生文字リテラルの中で、css スタイルシートのハイライトができます。
JetBrains IDE 独自機能
/* lang=sql */ を付与することで、文字列や生文字リテラルの中で、SQL ステートメントのハイライトができます。
/* lang=json,~~~ */ を付与した、文字列や生文字リテラルの中の JSON については、以下のシンタックスチェックも行われます。
| 記述 | strict (厳密モード) |
コメントアウト を許容 |
余分なカンマ を許容 |
|---|---|---|---|
/* lang=json */ |
- | ||
/* lang=json,AllowComment,TrailingCommas */ |
- | ||
/* lang=json,strict */ |
- | - | |
/* lang=json,strict,AllowComment */ |
- | ||
/* lang=json,strict,TrailingCommas */ |
- | ||
/* lang=json,strict,AllowComment,TrailingCommas */ |
| 記述 | strict (厳密モード) |
コメントアウト を許容 |
余分なカンマ を許容 |
|---|---|---|---|
/* lang=json */ |
- | - |
strict を付記することで、JSON を strict (厳密) モードで構文チェックが行われます。
※ 静的解析により、警告 JSON001 が表示されます。


strict モードの際、AllowComment を付記することで、コメントアウトがあっても、静的解析の構文チェックで、警告 JSON001 が発生しないようになります。

strict モードの際、TrailingCommas を付記することで、余分なカンマがあっても、静的解析の構文チェックで、警告 JSON001 が発生しないようになります。

strict モードの際、AllowComment と TrailingCommas を付記することで、コメントアウトがあっても、余分なカンマがあっても、静的解析の構文チェックで、警告 JSON001 が発生しないようになります。
Rider では、/* lang=xml */ を付与した、文字列や生文字リテラルの中の XML については、シンタックスチェックも行われます。



JetBrains IDE 独自機能
/* lang=javascript */ を付与することで、文字列や生文字リテラルの中に記述した JavaScript スクリプトの構文チェックが行われます。
JetBrains IDE 独自機能
/* lang=html */ を付与することで、文字列や生文字リテラルの中に記述した HTML マークアップの構文チェックが行われます。
JetBrains IDE 独自機能
/* lang=css */ を付与することで、文字列や生文字リテラルの中に記述した css スタイルシートの構文チェックが行われます。
JetBrains IDE 独自機能
/* lang=sql */ を付与することで、文字列や生文字リテラルの中に記述した SQL ステートメントの構文チェックが行われます。
/* lang=regex */ または /* lang=regexp */ を付与することで、逐語的文字列リテラルの中で、正規表現のインテリセンスが効きます。


/* lang=datetime */ を付与することで、文字列の中で、DateTime のインテリセンスが効きます。

/* lang=date */ を付与することで、文字列の中で、DateOnly のインテリセンスが効きます。

心の声:
ヤーポン法も許すまじですが、アメリカの MM/dd/yyyy は本当に絶許(絶対に許すまじ)です。
=== 例 ===Universal (国際標準): 2026-02-01 ja-JP (日本): 2026/02/01 ※大きいほうから(年→月→日) en-GB (英国): 01/02/2026 ※小さいほうから(日→月→年) en-US (米国): 02/01/2026 ※アメリカだけ、月→日→年
/* lang=time */ を付与することで、文字列の中で、TimeOnly のインテリセンスが効きます。

/* lang=datetimeformat */ を付与することで、文字列の中で、DateTimeFormat のインテリセンスが効きます。

JetBrains IDE 独自機能
/* lang=javascript */ を付与することで、文字列や生文字リテラルの中で JavaScript スクリプトの入力補完が効きます。
JetBrains IDE 独自機能
/* lang=html */ を付与することで、文字列や生文字リテラルの中に記述した HTML マークアップの入力補完が効きます。
JetBrains IDE 独自機能
/* lang=css */ を付与することで、文字列や生文字リテラルの中に記述した css スタイルシートの入力補完が効きます。
JetBrains IDE 独自機能
/* lang=sql */ を付与することで、文字列や生文字リテラルの中に記述した SQL ステートメントの入力補完が効きます。
以下は IDE 上で、シンタックスハイライトや、シンタックスチェックは行われないものの、Roslyn のアナライザーによって、文字列中の特別な解析が行われるものです。
複合書式指定文字列 として、解析されます。
数値書式指定文字列 として、解析されます。
列挙型 として、解析されます。
TimeSpan として、解析されます。
スタックトレース として、ツリー状に解析されます。
.NET 7.0 ~ 標準機能
メソッドの仮引数(文字列型)に StringSyntax 属性を付与することで、
実引数の文字列にて、シンタックスハイライトや、シンタックスチェック、インテリセンス等を効かせることができます。



JetBrains IDE 独自機能
... // TODO
JetBrains IDE 独自機能
... // TODO
Visual Studio 2026、JetBrains Rider 2026 時点での、一覧です。
| 言語 | コメントアウト | シンタックス ハイライト |
シンタックス チェック |
インテリ センス |
内部での 静的解析 |
|---|---|---|---|---|---|
| C# | /* lang=C# */ |
- | - | ||
| C# | /* lang=C#-test */ |
- | - | ||
| JSON | /* lang=json */ |
- | |||
| JSON | /* lang=json */,AllowComment,TrailingCommas */ |
- | |||
| JSON (厳密) |
/* lang=json,Strict */ |
- | |||
| JSON (厳密) (コメント許容) |
/* lang=json,Strict,AllowComment */ |
- | |||
| JSON (厳密) (末尾カンマ許容) |
/* lang=json,Strict,TrailingCommas */ |
- | |||
| JSON (厳密) (コメント許容) (末尾カンマ許容) |
/* lang=json,Strict,AllowComment,TrailingCommas */ |
- | |||
| 正規表現 | /* lang=regex */ |
||||
| 正規表現 | /* lang=regexp */ |
||||
| XML | /* lang=xml */ |
- | - | - | |
| 複合書式 指定文字列 |
/* lang=composite */ |
- | - | ||
| 数値書式 指定文字列 |
/* lang=numeric */ |
- | - | - | |
| 列挙型 | /* lang=enum */ |
- | - | - | |
| 日付時刻 (DateTime) |
/* lang=datetime */ |
- | - | ||
| 日付 (DateOnly) |
/* lang=date */ |
- | - | ||
| 時刻 (TimeOnly) |
/* lang=time */ |
- | - | ||
| 時間間隔 (TimeSpan) |
/* lang=timespan */ |
- | - | - | |
| 日付時刻 指定形式 (DateTime Format) |
/* lang=DateTimeFormat */ |
- | - | ||
| GUID | /* lang=guid */ |
- | - | ||
| URI | /* lang=uri */ |
- | - | ||
| Web ルーティング |
/* lang=route */ |
- | - | ||
| スタック トレース |
/* lang=StackFrame */ |
- | - | - |
| 言語 | コメントアウト | シンタックス ハイライト |
シンタックス チェック |
入力補完 |
|---|---|---|---|---|
| C# | /* lang=C# */ |
- | ||
| JSON | /* lang=json */ |
- | ||
| 正規表現 | /* lang=regex */ |
|||
| 正規表現 | /* lang=regexp */ |
|||
| ECMAScript 準拠 正規表現 |
/* lang=jsregexp */ |
|||
| XML | /* lang=xml */ |
- | ||
| HTML | /* lang=html */ |
|||
| CSS | /* lang=css */ |
|||
| JavaScript | /* lang=javascript */ |
|||
| SQL | /* lang=sql */ |
|||
| VBA | /* lang=vba */ |
- | - | |
| F# | /* lang=F# */ |
- | - | |
| Java | /* lang=java */ |
- | - | |
| C | /* lang=C */ |
- | - | |
| C++ | /* lang=C++ */ |
- | - | |
| bash | /* lang=sh */ |
- | ||
| bash | /* lang=bash */ |
- | ||
| YAML | /* lang=yaml */ |
- | - |
{
pages {
search (query: "TechMemo/VisualStudio") {
results {
id
path
title
}
}
}
}