🦉

.NET 10のアップデートがアツい

に公開

https://andrewlock.net/exploring-dotnet-10-preview-features-2-behind-the-scenes-of-dotnet-run-app.cs/

.NET 10のpreviewに画期的な機能が追加されました。内容はdotnet runコマンドの実行に必要なファイルが*.csファイル単体になるというものです。元々、.csprojファイルが必要だったのですが、不要になったとのことです。

単に実行可能になっただけでなく、sdkやNugetのパッケージなども導入可能です。具体的には次のように記述します。

#!/usr/bin/dotnet run

#:sdk Microsoft.NET.Sdk.Web
#:package Newtonsoft.Json@13.0.3
#:property UserSecretsId 2eec9746-c21a-4933-90af-c22431f35459

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => JsonConvert.SerializeObject(new { Greeting = "Hello, World!" }));

app.Run();

静的型付けによる型の保証がされつつ、スクリプト言語のような書き方ができるとなると、バッチ処理などで活躍しそうだなと感じました。

この書き方で思い出したのですが、Pythonのuvでも同じようなことができます。

# /// script
# dependencies = [
#   "requests<3",
#   "rich",
# ]
# ///

import requests
from rich.pretty import pprint

resp = requests.get("<https://peps.python.org/api/peps.json>")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

引用: https://docs.astral.sh/uv/guides/scripts/#creating-a-python-script

こちらもboto3などPython製のライブラリを動かすときに便利です。

Discussion