Skip to content

単独ファイル実行 #494

@ufcpp

Description

@ufcpp

C# 14 ではないけども .NET 10 からの機能。

ブログ: https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app/

少なくともデモ用途としてはすっごい便利:
ufcpp-live/UfcppLiveAgenda#104 (comment)

だいぶ前からある「C# Script 方言」とは違って、普段使ってる通りの C#。
内部的にも「csproj を生成してそれを dotnet run App.csproj してる」みたいな実装。
複数ファイルコンパイル、パッケージ参照、プロジェクト参照可能。

ignored directives

そのために、C# の言語的にも #!#: ディレクティブを追加。

csharplang 8617

(といっても「コンパイラーとしては単に無視」、「実際にそれを見てるのは SDK 側」)
#! は先頭行でないとエラー。(空行すら #! の前にあるのはダメ。)
#: も「コメントと #! を除いて一番前」でないとエラー。

基本的には dotnet run App.cs の形でビルド・実行しないと #!#: もエラー。
(内部的に <Features>FileBasedProgram</Features> フラグを立てる構造なので、これを手書きすればビルドできちゃうけど、意味はない。)
エラーメッセージはちゃんと 「'#:' directives can be only used in file-based programs ('/feature:FileBasedProgram')」

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions