基本的にはこれで→AppVeyor で NuGet パッケージの作成とデプロイを自動化 | grabacr.nét
困ったこと
- 最初、バージョン管理 その1 の方法でやってた
- でも push する度 nuget.org にデプロイされるのはこまる
- push した際、常に nuget.org にデプロイしたいわけじゃない
- AppVeyor の deployment condition で master ブランチの時だけとかある程度コントロールできるようだけど足りない
- デプロイしたい時だけできるようにしたい
解決策
ぐらばくせんせーに聞いたところ、以下の解決策が提示されました。
- AssemblyInfo patching を止める
- AppVeyor の Build version は使わない&気にしない
- バージョン番号は AssemblyInfo.cs だけで管理
- nuspec は変わらず
<version>$version$</version>
としておけば AssemblyInfo.cs のバージョン番号の NuGet パッケージになる - デプロイしたい時に AssemblyInfo.cs のバージョンを上げて push
AssemblyInfo.cs のバージョンを変更しないで push した場合、NuGet パッケージ自体は作成されますが、nguet.org に投げても「もうそのバージョンはあるぜ!」と言われてスキップされます。
ビルドも失敗するわけではない。いい感じですね。。
おまけ
Branches and Tags – Appveyor には APPVEYOR_REPO_TAG
でタグが push されたかどうかわかるっぽく書いてあったので、タグで管理できるかと一瞬思ったけど、true
になる場合を観測できなかったので諦め。