|
| 1 | +# チートシート |
| 2 | + |
| 3 | +**手順だけを並べたもの。** 理由・詳細・落とし穴の背景は、各項のリンク先が一次情報。 |
| 4 | + |
| 5 | +> ここは**意図的に二重管理**している。手順は「思い出すため」に転記し、 |
| 6 | +> **判断が要ることは書かない。** 迷ったらリンク先を読むこと。 |
| 7 | +
|
| 8 | +--- |
| 9 | + |
| 10 | +## 1. 検証(変更したら必ず) |
| 11 | + |
| 12 | +```powershell |
| 13 | +cd root\programs |
| 14 | +.\0_RunAll.ps1 # 1 → 2 → 3 を順に実行する |
| 15 | +``` |
| 16 | + |
| 17 | +個別に回すとき。**順序は固定**(1 のクリーンとアセンブリ配置が 2・3 の前提)。 |
| 18 | + |
| 19 | +```powershell |
| 20 | +.\1_BuildAll.ps1 -IgnoreErrors 'error MSB(3482|3325|3321):.*WSClientWinCone_sample\.csproj' |
| 21 | +.\2_RunAllTests.ps1 |
| 22 | +.\3_SmokeTest.ps1 |
| 23 | +``` |
| 24 | + |
| 25 | +| | 合格の目安 | 詳細 | |
| 26 | +|---|---|---| |
| 27 | +| ビルド | 全ステップ OK | [`BUILDING.md`](BUILDING.md) | |
| 28 | +| 単体テスト | 8/8 OK、差分 0 | [`TESTING.md`](TESTING.md) | |
| 29 | +| 疎通 | 22/22 OK | [`SMOKETEST.md`](SMOKETEST.md) | |
| 30 | + |
| 31 | +- **`-IgnoreErrors` を付けないと `MSB3482` で NG になる。** ClickOnce の署名で、 |
| 32 | + 証明書が無い環境では必ず出る([`BUILDING.md`](BUILDING.md) 4 節)。 |
| 33 | + **`0_RunAll.ps1` はこれを渡さない**ので、`1_BuildAll.ps1` が `1` を返すことがある。 |
| 34 | + 終了コードだけで判断せず、エラー一覧の内容を見ること |
| 35 | +- `2_RunAllTests.ps1` は `Result*.txt` を書き換える。**差分 0 なら中身は同じ** |
| 36 | +- 前提(DB・サービス・IIS Express)は [`RELEASE.md`](RELEASE.md) 2 節 |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +## 2. リリース(NuGet 公開) |
| 41 | + |
| 42 | +**一次情報は [`RELEASE.md`](RELEASE.md) と [`CS/NuGet/README.md`](CS/NuGet/README.md)。** |
| 43 | + |
| 44 | +``` |
| 45 | +1. develop → master へマージ(--no-ff)し、タグをプッシュ |
| 46 | +2. .\0_SetVersion.ps1 -Version 3.3.0 |
| 47 | +3. コミット & push ← Source Link はこのコミットに固定される |
| 48 | +4. CS\0_Release4Nuget.bat ← 版はアセンブリに焼き込まれる |
| 49 | +5. CS\NuGet\_NuGetPack.bat ← 版の一致(ソース・DLL)を自動検査 |
| 50 | +6. 確認 5 点 ← README.md 2 節 |
| 51 | +7. set NUGET_API_KEY=<キー> |
| 52 | + CS\NuGet\out\sp\_NuGetPush.bat |
| 53 | +8. キーを Revoke(Delete しない) |
| 54 | +``` |
| 55 | + |
| 56 | +### バージョンを上げる |
| 57 | + |
| 58 | +```powershell |
| 59 | +cd root\programs |
| 60 | +.\0_SetVersion.ps1 -Version 3.3.0-alpha1 -WhatIf # 変更内容の確認 |
| 61 | +.\0_SetVersion.ps1 -Version 3.3.0-alpha1 # 実行 |
| 62 | +``` |
| 63 | + |
| 64 | +`Directory.Build.props` と net48 6 本の `AssemblyInfo.cs` を一括更新する。 |
| 65 | +**プレリリース サフィックスはアセンブリの版には入らない。** |
| 66 | +→ [`RELEASE.md`](RELEASE.md) フェーズ 0 |
| 67 | + |
| 68 | +### 公開前の確認 5 点 |
| 69 | + |
| 70 | +→ [`CS/NuGet/README.md`](CS/NuGet/README.md) 2 節 |
| 71 | + |
| 72 | +``` |
| 73 | +1. .nupkg と .snupkg が対で出ている(.nupkg に pdb が入っていない) |
| 74 | +2. PDB が portable(先頭 4 バイトが BSJB) |
| 75 | +3. Source Link の URL が入っている(net48 と net10.0 の両方) |
| 76 | +4. nuspec の <repository commit> が PDB のコミットと一致 |
| 77 | +5. そのコミットが GitHub 上にある(raw URL が 200)+ ワーキング ツリーが綺麗 |
| 78 | +``` |
| 79 | + |
| 80 | +### テスト公開(`Erutcurtsarfni.Oyruot.Public`) |
| 81 | + |
| 82 | +``` |
| 83 | +CS\0_Release4Nuget.bat |
| 84 | +CS\NuGet\_T_NuGetPack.bat 3.3.0-alpha2 ← 版は引数で渡す |
| 85 | +set NUGET_API_KEY=<キー> |
| 86 | +CS\NuGet\out\sp\_T_NuGetPush.bat |
| 87 | +``` |
| 88 | + |
| 89 | +作業ブランチ上で行ってよい。→ [`CS/NuGet/README.md`](CS/NuGet/README.md) 4 節 |
| 90 | + |
| 91 | +### 生成物を消す |
| 92 | + |
| 93 | +``` |
| 94 | +CS\NuGet\_Cleanup.bat ← in\ と out\ の全パッケージ |
| 95 | +CS\NuGet\_Cleanup.bat Touryo.Infrastructure ← その接頭辞だけ |
| 96 | +``` |
| 97 | + |
| 98 | +パック バッチが自動で呼ぶので、通常は不要。→ [`CS/NuGet/README.md`](CS/NuGet/README.md) 6 節 |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +## 3. VB 側のビルド |
| 103 | + |
| 104 | +``` |
| 105 | +root\programs\VB\0_ExecAllBat.bat ← 通し(先に CS 側を建てる) |
| 106 | +``` |
| 107 | + |
| 108 | +- 先頭で `cd "..\CS"` して C# 側の `2_Build_NuGet_net48.bat` を呼ぶ。**VB は C# の成果物に依存する** |
| 109 | +- **個別実行では見つからない不具合がある。** `1_DeleteDir.bat` が `obj` / `packages` を |
| 110 | + 消した後にだけ露見するものがあるため、**通しで確かめること**(#533) |
| 111 | +- 合格の目安 : ビルド成功 22 / 失敗 0 |
| 112 | + |
| 113 | +--- |
| 114 | + |
| 115 | +## 4. ツールを CLI で使う |
| 116 | + |
| 117 | +**引数の一覧は README に無い。`/HELP` が一次情報。** |
| 118 | + |
| 119 | +| ツール | 場所 | |
| 120 | +|---|---| |
| 121 | +| `DaoGen_Tool`(墨壺) | [`README.md`](CS/Frameworks/Tools/DaoGen_Tool/README.md) | |
| 122 | +| `DeployZipPackWithHTTP` | [`README.md`](CS/Frameworks/Tools/DeployZipPackWithHTTP/README.md) | |
| 123 | + |
| 124 | +終了コードだけで判断せず、**生成物の存在も確認する**(パス区切りを誤ると成功を返しつつ別の場所に出る)。 |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +## 5. コードを書く前に |
| 129 | + |
| 130 | +**規約は [`CODING.md`](CODING.md)、領域ごとの事情は各 `ANALYSIS.md`。** |
| 131 | + |
| 132 | +| | | |
| 133 | +|---|---| |
| 134 | +| ファイル ヘッダ・更新者名・Copyright ブロック | [`CODING.md`](CODING.md) 1 節 | |
| 135 | +| `ArgumentException` だけ引数の順が違う | [`CODING.md`](CODING.md) 3 節 | |
| 136 | +| フレームワーク本体 | [`CS/Frameworks/ANALYSIS.md`](CS/Frameworks/ANALYSIS.md) | |
| 137 | +| net48 サンプル | [`CS/Samples/ANALYSIS.md`](CS/Samples/ANALYSIS.md) | |
| 138 | +| netcore サンプル | [`CS/Samples4NetCore/ANALYSIS.md`](CS/Samples4NetCore/ANALYSIS.md) | |
| 139 | + |
| 140 | +### `.bat` を書くとき |
| 141 | + |
| 142 | +- **リリース・公開に使う bat は非 ASCII を書かない**(コメントも英語)。BOM も不要 |
| 143 | +- **`chcp` を bat の中で使わない** |
| 144 | +- 非 ASCII が**外部プログラムへ渡す引数**なら消せない。その場合は |
| 145 | + コンソールのコード ページに合わせる(Shift-JIS・BOM なし) |
| 146 | +- 改行は **CRLF** |
| 147 | + |
| 148 | +→ [`CODING.md`](CODING.md) 4 節 |
| 149 | + |
| 150 | +### `.ps1` を書くとき |
| 151 | + |
| 152 | +- **UTF-8 BOM 付き** |
| 153 | +- **PowerShell 5.1 と 7 の両方で動くこと。** 変更したら 5.1 でも実行する |
| 154 | + |
| 155 | +```powershell |
| 156 | +powershell.exe -NoProfile -Command "Set-Location 'root\programs'; .\3_SmokeTest.ps1" |
| 157 | +``` |
| 158 | + |
| 159 | +→ [`CODING.md`](CODING.md) 5 節 |
| 160 | + |
| 161 | +--- |
| 162 | + |
| 163 | +## 6. よく踏む落とし穴 |
| 164 | + |
| 165 | +| 症状 | 原因 | 対処 | |
| 166 | +|---|---|---| |
| 167 | +| `'xxx' is not recognized` が大量に出る | bat の非 ASCII とコード ページ | ASCII 化。[`CODING.md`](CODING.md) 4 節 | |
| 168 | +| `MSB4226`(`Microsoft.WebApplication.targets`) | nuget が別製品の MSBuild を拾った | `nuget.exe restore ... %NUGET_MSBUILD%` | |
| 169 | + |
| 170 | +**NuGet パッケージ作成の落とし穴は |
| 171 | +[`CS/NuGet/README.md`](CS/NuGet/README.md) 9 節**にまとめてある。 |
| 172 | + |
| 173 | +``` |
| 174 | +.snupkg だけ 403 / F11 でローカルが開く / nuspec と PDB のコミット不一致 |
| 175 | +リビルド忘れ / net48 だけ効かない / 公開したコミットが消えた |
| 176 | +``` |
| 177 | + |
| 178 | +**上 5 つは公開前に机上で分かる。** 2 節の確認 5 点を省かないこと。 |
| 179 | + |
| 180 | +--- |
| 181 | + |
| 182 | +## 7. エージェントとして守ること |
| 183 | + |
| 184 | +**一次情報は [`AGENTS.md`](../../AGENTS.md)。** |
| 185 | + |
| 186 | +- **Git 操作をしない**(`add` / `commit` / `push` / `checkout` / `switch` / `branch` / |
| 187 | + `reset` / `restore` / `stash`)。参照系(`status` / `diff` / `log` / `show` 等)は自由 |
| 188 | +- **GitHub への投稿は、文面を提示して承認を得てから。** `gh` で行い、`--body-file` を使う。 |
| 189 | + アカウントは `OsscJpDevInfra`(`gh auth status` で確認) |
| 190 | +- **Issue のクローズ・ラベル・アサイン、PR の作成やマージは人が行う** |
| 191 | +- **NuGet への push は人のみ**(外部公開で取り消しが困難) |
| 192 | +- 前提となるサービスや DB の状態が足りないときは、**勝手に変えず対処方法とともに報告する** |
0 commit comments