C#スクリプトとファイル実行 .NET 10: Tim Coreyによる徹底解説
C#は伝統的にコンパイル型の言語であり、最も簡単なプログラムを実行するためにプロジェクト、ソリューション、Visual Studio設定が必要でした。 しかし、.NET 10では、状況が劇的に変化しました。 ティム・コーリーは、C#スクリプトとファイル実行に関するビデオで、開発者がC#をスクリプト言語として扱い、完全なプロジェクトを作成せずにスクリプトファイルを直接実行できる方法を示しています。 この新しい能力により、プログラマーは単一のcsファイルでスクリプトコードを書き、コマンドプロンプトから実行し、新しいコードを迅速に実験できます。
この記事では、これらの機能を詳細に探り、ティムの指導に従ってワークフロー、コマンドライン使用法、ファイルベースのC#実行の高度な機能を理解します。
Introduction to C# Scripting in .NET 10
ティムはビデオの開始時に、.NET 10のC#スクリプトにより、単一のcsファイルが完全なアプリケーションとして機能することができると強調します。 従来のVisual Studioプロジェクトとは異なり、公開クラス宣言、Program.cs、ソリューションファイルは不要です。現在はスクリプトを書き、demo.csとして保存し、即座に実
このアプローチはPythonやJavaScriptでのスクリプトと似ており、単一のファイルがプロジェクトを作成せずにタスクを実行することができます。 ティムは、これは単なる便宜以上のものであり、タスクを実行し、ステートメントをテストし、オブジェクトやデータを迅速に実験する能力を提供することを強調します。
最初のスクリプトファイルを作成する
ティムはVisual Studio CodeでFileDemo.csという単純なcsファイルを作成する方法を示します。 次のコードは、典型的な"Hello World"の例として機能します:
Console.WriteLine("Hello World");ファイルを実行するのは、コマンドプロンプトを開いて次のコマンドを実行するほど簡単です:
dotnet run FileDemo.cs出力はHello Worldを即座に表示し、単一ファイルの実行時実行が完全にサポートされていることを示しています。 ティムは、これは新しいコードのテスト、小さなスクリプト、またはフルプロジェクトのオーバーヘッドが不要な状況に理想的であると指摘します。
コマンドライン入力と引数の処理
次に、ティムはスクリプトコードでコマンドライン引数を受け入れる能力を示します。 hello worldの例を変更することで、スクリプトファイルに直接値を渡すことができます:
Console.WriteLine($"Hello {args[0]}");dotnet run demo.cs Timを実行すると、出力がHello Timになります。 ティムは、args配列が従来のコンソールアプリケーションと同じように機能し、ファイルベースのスクリプトが言語のすべての機能を持つ完全なC#アプリケーションであることを示しています。
簡略化された構文と暗黙的なusing
ティムは、.NET 10が暗黙的なusingディレクティブをサポートしており、using System;を明示的に書かずにSystem名前空間にアクセスできることを説明します。 これにより、余剰な構文が削減され、スクリプトの最初のオブジェクトやメソッドが即座に実行されることを可能にします。
この簡略化はcsxファイル拡張子とVisual Studio Codeのインタラクティブウィンドウワークフローに適用され、Pythonスクリプトに似てREPLウィンドウやインタラクティブウィンドウを使ってスクリプトコードを行ごとにテストすることができます。
インタラクティブなユーザー入力
次に、ティムはユーザーからの入力を読み取ることでスクリプトをインタラクティブにする方法を示します:
Console.Write("名前は? ");
string name = Console.ReadLine();
Console.WriteLine($"Hello {name}");ここで、インタラクションの最初のオブジェクトはstring nameで、即座にアクセスして表示することができます。 ティムは、nullableの警告が表示されるかもしれませんが、適切に処理することができると述べています。 この入力を読み取り出力を表示する能力は、単純なデモコードを超えてタスクのためにスクリプトファイルを多用途かつ実用的にします。
スクリプトでNuGetパッケージを使用する
スクリプトファイルの実行能力を拡張するために、ティムはNuGetパッケージを導入します。 例えば、Spectre.Consoleを使用することで、出力を色でフォーマットすることができます:
#r "nuget: Spectre.Console, 0.54.0"
using Spectre.Console;
AnsiConsole.MarkupLine("[red]Hello Tim[/]");ティムはスクリプトコードでNuGetパッケージを通じて参照を追加することで、完全なプロジェクトなしに外部アセンブリを活用できることを説明します。 彼はスクリプトを実行し、コンソールがユーザーの名前を赤で表示するのを見せて、ファイルベースのスクリプトが完全なプロジェクトと同じくらい強力であることを示しています。
スクリプトを実行可能ファイルとして公開する
ティムはまた、csファイルからの実行可能ファイルの作成をカバーします。 次を実行することで:
dotnet publish Filedemo.csDLLまたはEXEをWindows、Linux、またはMac用に生成でき、スクリプトファイルを移植可能にします。 彼はこれらの実行可能ファイルがネイティブAOTであり、最大の実行時パフォーマンスを提供することを強調します。 必要な場合、AOTプロパティをファイルの先頭でプロパティディレクティブを使用してオフにすることができます。
これにより、.NET 10スクリプトが簡単な構文を維持しながら、プロダクション対応のファイルを生成する能力を実証しています。
スクリプトをフルプロジェクトに変換する
複数クラス、メソッド、オブジェクトを必要とするより複雑なアプリケーションのために、ティムはスクリプトファイルをフルプロジェクトに変換する方法を示しています:
dotnet project convert FileDemo.csこのコマンドは、新しいフォルダーを作成し、NuGetパッケージの参照、nullable設定、暗黙的なusingを保持したCSプロジェクトファイルを含みます。 オリジナルのスクリプトからの以下のコードを保持し、Visual Studioソリューションに統合したり、スタンドアロンプロジェクトとして実行したりするのが簡単です。
ファイルベースのスクリプティングの主な利点
ティムはC#スクリプトとファイル実行のいくつかの利点を強調しています。
スピード – スクリプトファイルから新しいコードを即座に実行します。
移植性 – スクリプトをWindows、Linux、またはmacOS用の実行可能ファイルとして公開します。
パワー – スクリプトはNuGetパッケージを使用し、データにアクセスし、ユーザー入力を処理することができます。
柔軟性 – csファイルをフルプロジェクトに昇格させるのにほとんど労力がかかりません。
- オーバーヘッドの削減 – 簡単なタスクにはソリューション、プロジェクト、またはクラス宣言が不要です。
ティムは、ファイルベースのスクリプトはすべてのシナリオに適しているわけではないが、テスト、デモ、およびクイックコンソールベースのタスクには最適であると述べています。
結論
ティム・コーリーのビデオは、.NET 10におけるC#スクリプティングが開発者にとって強力かつ柔軟なツールであることを示しています。 スクリプトファイルは、新しいコードの即時実行、ユーザー入力の処理、オブジェクトとの対話、NuGetパッケージの使用を可能にします。 スクリプトは、コマンドプロンプトから実行したり、Visual Studio Codeで実行したり、クロスプラットフォームで使用するためにDLLやEXEとして公開したりすることができます。
スクリプトコードを完全なプロジェクトに変換する能力は、スクリプトファイルのシンプルさと伝統的なVisual Studioプロジェクトの拡張性の両方を提供します。 ティムは、C#スクリプティングを使って自由にスクリプトコードを書き、テストし、変更することを促し、急速な開発と実験にとって貴重なツールであるとしています。
ティムがまとめているように、この方法は小規模プロジェクト、コンソールアプリケーション、およびデータ処理タスクに理想的であり、従来のC#開発を補完する現代的で効率的なワークフローを提供します。

