Skip to main content

scripting-guide

このリポジトリでは、スクリプト実行は全て C# で行います。Python や PowerShell などのスクリプト言語は使用しません。C# を使って、ファイルを作らずにデータ処理を行う方法を提供します。

来源信息

仓库
runceel/super-dotnet-new-01
最近来源活动
2026年5月27日 06:23
检测到的 SKILL.md 语言
日语
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
scripting-guide
description
このリポジトリでは、スクリプト実行は全て C# で行います。Python や PowerShell などのスクリプト言語は使用しません。C# を使って、ファイルを作らずにデータ処理を行う方法を提供します。
# データ処理スクリプト作成ガイド(C# file-based apps) このスキルは、C# file-based apps を使ってファイルを作らずにデータ処理を行う方法を提供します。 **適用バージョン:** .NET 10 SDK 以降(C# 14 以降) ## 基本方針 コードは **必ずパイプで `dotnet run -` に渡して実行** してください。 `Set-Content` や `Out-File` 等で `.cs` ファイルを新規作成してから実行する方法は **禁止** です。 **優先順位:** 1. **パイプ実行(必須):** コード文字列を `dotnet run -` に直接パイプして実行する 2. **既存ファイル実行:** プロジェクトに既に存在する `.cs` ファイルを `dotnet <file>.cs` で実行する `#:package` ディレクティブが必要な場合も、パイプ実行で対応できます(後述の「外部ライブラリを使う場合」を参照)。 ## ワンライナー実行(最優先) ### 基本 **PowerShell:** ```powershell 'Console.WriteLine("Hello!");' | dotnet run - ``` **Bash:** ```bash echo 'Console.WriteLine("Hello!");' | dotnet run - ``` ### 複数行 **PowerShell:** ```powershell @' var sum = Enumerable.Range(1, 100).Sum(); Console.WriteLine($"合計: {sum}"); '@ | dotnet run - ``` **Bash:** ```bash dotnet run - << 'EOF' var sum = Enumerable.Range(1, 100).Sum(); Console.WriteLine($"合計: {sum}"); EOF ``` ### 暗黙的に使えるnamespace 以下は `using` 不要で使えます: - `System`, `System.IO`, `System.Collections.Generic`, `System.Linq`, `System.Net.Http`, `System.Threading`, `System.Threading.Tasks` ## 標準ライブラリでの処理 ### JSON処理(パッケージ不要) `json.cs`: ```csharp using System.Text.Json; var json = Console.In.ReadToEnd(); var doc = JsonDocument.Parse(json); Console.WriteLine(doc.RootElement.GetProperty("name")); ``` 実行: ```powershell '{"name":"太郎"}' | dotnet json.cs ``` ## 外部ライブラリを使う場合 `#:package` ディレクティブが必要な場合も、パイプで実行します。ファイルを作成しないでください。 ### CSV処理 ```powershell @' #:package CsvHelper using CsvHelper; using System.Globalization; using var reader = new StreamReader(args[0]); using var csv = new CsvReader(reader, CultureInfo.InvariantCulture); var count = csv.GetRecords<dynamic>().Count(); Console.WriteLine($"レコード数: {count}"); '@ | dotnet run - -- data.csv ``` ### Excel処理 ```powershell @' #:package ClosedXML using ClosedXML.Excel; using var workbook = new XLWorkbook(args[0]); var worksheet = workbook.Worksheet(1); foreach (var row in worksheet.RowsUsed()) { Console.WriteLine(row.Cell(1).Value); } '@ | dotnet run - -- Employee.xlsx ``` ## よく使うライブラリ | 用途 | ディレクティブ | 備考 | |------|---------------|------| | JSON処理 | (不要) | `System.Text.Json` が標準で利用可能 | | CSV処理 | `#:package CsvHelper` | | | Excel処理 | `#:package ClosedXML` | | ## 実用パターン ### 標準入力とファイル引数の両対応 ```csharp var input = args.Length > 0 ? File.ReadAllText(args[0]) : Console.In.ReadToEnd(); Console.WriteLine(input.ToUpper()); ``` 使い方: ```powershell # ファイルから dotnet script.cs -- input.txt # 標準入力から Get-Content input.txt | dotnet script.cs ``` ### エラーハンドリング ```csharp try { // 処理 } catch (Exception ex) { Console.Error.WriteLine($"エラー: {ex.Message}"); return 1; } ``` ## 参考資料 - [File-based apps](https://learn.microsoft.com/dotnet/core/sdk/file-based-apps) - [Top-level statements](https://learn.microsoft.com/dotnet/csharp/fundamentals/program-structure/top-level-statements)
在 GitHub 查看