Visual Studio/CLI での基本プロジェクト作成手順
(.NET 6 以降の LTS を想定。旧バージョンでも流れは同様です)
1. 事前準備
| 項目 | 推奨環境 | 補足 |
|---|---|---|
| IDE | Visual Studio 2022(17.9 以降) | Community 版で可 |
| SDK | .NET 6/.NET 8 SDK | dotnet --list-sdks で確認 |
| パッケージ | HtmlAgilityPack 最新安定版 | 2025-06 時点で 1.12.x 系 |
2. Visual Studio での作成手順
-
新規プロジェクトの作成
-
テンプレート一覧から 「コンソール アプリ」(C#) を選択
-
プロジェクト名例:
HapQuickStart -
フレームワーク は
.NET 8.0 (Long-Term Support)などを指定
-
-
プロジェクト設定の最適化
-
ソリューション・エクスプローラーで プロジェクト → 右クリック → プロパティ
-
主要ポイント
タブ 推奨設定 理由 ビルド Nullable→ 有効NRT 対応で null 安全性向上 言語バージョン preview以外の最新新機能利用可 出力種別 自動単純な CLI アプリでは変更不要
-
-
NuGet で HtmlAgilityPack を追加
-
依存関係 → 右クリック → NuGet パッケージの管理
-
「参照」で HtmlAgilityPack を検索 → 最新安定版をインストール
-
packages.lock.jsonを有効にしておくと CI/CD でバージョン差異を抑止できる
-
-
最小構成の実装例 (
Program.cs)-
HtmlWebは自動で HTTP(S) 取得と文字コード判定を行う -
XPATH・CSS セレクタ併用には HtmlAgilityPack.CssSelectors.NetCore 等を追加すると便利
-
3. dotnet CLI での作成手順
-
プロジェクトひな型生成
-
パッケージ参照を追加
-
ビルド & 実行
-
推奨オプション(
HapQuickStart.csprojを編集)
4. 共通ベストプラクティス
| カテゴリ | 推奨事項 | 理由 |
|---|---|---|
| バージョン固定 | dotnet restore --use-lock-file を CI で強制 |
ビルドの再現性 |
| HTTP クライアント | 複数ページを巡回する場合は HttpClient を共有 |
ソケット枯渇防止 |
| 非同期 API | LoadFromWebAsync を使用 |
UI ブロック回避・スケール向上 |
| 文字コード | HtmlDocument.OptionDefaultStreamEncoding を適宜設定 |
レガシー SJIS HTML の解析に備える |
| HTML 整形 | doc.OptionOutputAsXml = true 等で出力調整 |
XPath デバッグが容易 |
5. トラブルシューティングのヒント
| 症状 | 原因例 | 解決策 |
|---|---|---|
NullReferenceException |
対象ノード未発見 | XPath/CSS が正しいか確認し、?. で null 解析 |
WebException: 403 |
UA ブロック | HtmlWeb の UserAgent を変更 |
| 日本語が文字化け | エンコーディング誤判定 | 手動で web.Encoding = Encoding.GetEncoding("shift_jis") などを設定 |
まとめ
Visual Studio と dotnet CLI のどちらでも、テンプレート作成 → HtmlAgilityPack 追加 → 最小コード実装 という流れは共通です。IDE か CLI かはチームの開発スタイルで選択し、packages.lock.json と NRT 有効化を組み合わせて安定したビルド環境を構築してください。
ChatGPT4o 生成日:2025/06/23