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 での作成手順

  1. 新規プロジェクトの作成

    • テンプレート一覧から 「コンソール アプリ」(C#) を選択

    • プロジェクト名例: HapQuickStart

    • フレームワーク.NET 8.0 (Long-Term Support) などを指定

  2. プロジェクト設定の最適化

    • ソリューション・エクスプローラーで プロジェクト → 右クリック → プロパティ

    • 主要ポイント

      タブ 推奨設定 理由
      ビルド Nullable → 有効 NRT 対応で null 安全性向上
      言語バージョン preview 以外の最新 新機能利用可
      出力種別 自動 単純な CLI アプリでは変更不要
  3. NuGet で HtmlAgilityPack を追加

    • 依存関係 → 右クリック → NuGet パッケージの管理

    • 「参照」で HtmlAgilityPack を検索 → 最新安定版をインストール

    • packages.lock.json を有効にしておくと CI/CD でバージョン差異を抑止できる

  4. 最小構成の実装例 (Program.cs)

    csharp
    using HtmlAgilityPack; var url = "https://example.com"; var web = new HtmlWeb(); var doc = await web.LoadFromWebAsync(url); // タイトル要素抽出 var title = doc.DocumentNode.SelectSingleNode("//title")?.InnerText.Trim(); Console.WriteLine($"Title: {title}");
    • HtmlWeb は自動で HTTP(S) 取得と文字コード判定を行う

    • XPATH・CSS セレクタ併用には HtmlAgilityPack.CssSelectors.NetCore 等を追加すると便利


3. dotnet CLI での作成手順

  1. プロジェクトひな型生成

    bash
    dotnet new console -n HapQuickStart cd HapQuickStart
  2. パッケージ参照を追加

    bash
    dotnet add package HtmlAgilityPack # CSS セレクター拡張を使う場合 dotnet add package HtmlAgilityPack.CssSelectors.NetCore
  3. ビルド & 実行

    bash
    dotnet run
  4. 推奨オプションHapQuickStart.csproj を編集)

    xml
    <PropertyGroup> <Nullable>enable</Nullable> <LangVersion>latest</LangVersion> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup>

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 ブロック HtmlWebUserAgent を変更
日本語が文字化け エンコーディング誤判定 手動で web.Encoding = Encoding.GetEncoding("shift_jis") などを設定

まとめ

Visual Studio と dotnet CLI のどちらでも、テンプレート作成 → HtmlAgilityPack 追加 → 最小コード実装 という流れは共通です。IDE か CLI かはチームの開発スタイルで選択し、packages.lock.json と NRT 有効化を組み合わせて安定したビルド環境を構築してください。

ChatGPT4o 生成日:2025/06/23