Skip to main content

scripting-guide

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

معلومات المصدر

المستودع
runceel/super-dotnet-new-01
آخر نشاط في المصدر
٢٧ مايو ٢٠٢٦ في ٠٦:٢٣
لغة SKILL.md المكتشفة
اليابانية
النجوم
٠
التفرعات
٠

خيارات التثبيت

يُحدَّد 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