Skip to main content

scripting-guide

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

Datos de origen

Repositorio
runceel/super-dotnet-new-01
Última actividad en el origen
27 de mayo de 2026 a las 06:23
Idioma detectado de SKILL.md
japonés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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)
Ver en GitHub