先日、version 管理を自動化しようとしてやってしまった失敗。
アプリケーションのバージョンの管理
上記に記述があるように AssemblyVersionAttribute に "1.0.*" を指定して compile したわけだけど、その時 AssemblyFileVersionAttribute にも "1.0.*" を指定してしまった。
Unit test 通った後でちょっと忙しかったこともあり、他の人に compile お願いといって test までお願いすることに。その後、test で log 出力がうまくいかないと連絡が。。。
Log 出力は FileLogTraceListener を利用しているんですけど、その初期化時に System.ConfigurationException「パスに無効な文字が含まれます。」で落ちる。正確にはSystem.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str) でね。Configuration file がおかしいのかな?と思っていくら変更してもダメ。
しゃー無いので build し直してみる。すると下記警告が。。。
アセンブリの生成 -- 'ファイル バージョン' に指定されたバージョン '1.0.*' は正常な 'major.minor.build.revision' フォーマットではありません。
とりあえず修正してみた。。。結果、正常に動作した! これかよ!
Assembly vesion と file version は一致させたかったので、AssemblyFileVersionAttribute を comment out して解決。
ちゃんと reference 読んでみると AssemblyVersionAttribute には "*" の説明載っているけど AssemblyFileVersionAttribute には載っていない。あ~そのなのね。確認すると build された assembly の file version には "1.0.*" がそのまま入っていました。
でも、「パスに無効な文字が含まれます。」この message は無いな~。そもそも path の問題じゃないし。もう少し、わかりやすい message 返してよ。
ってゆうか compile 時に警告ではなく error にしてよ。動かないのあるのなら。