Skip to content

CS 版と VB 版の設定ファイルの同期方針を決める #553

Description

@OsscJpDevInfra

概要

CS 版と VB 版の設定ファイルが、どこまで同じで、どこから違うのかが決まっていない。

Samples/WebApp_sampleWeb.config は CS / VB でほぼ同じ内容だが、完全には同じでない。
「同じはずだから」とコピーすると、VB 固有の記述が消える。 実際に消した(後述)。

同期の方針を決め、差分が意図的なものだけになる状態にしたい。

現状

実際に起きたこと

#549 の作業で、CS 側 Web.config のコメントを整理した。同じコメントを VB 側にも入れるため
CS のファイルをコピーしたところ、VB 固有の内容が失われた。

ファイル 失われたもの
VB/Samples/WebApp_sample/MVC_Sample/MVC_Sample/Web.config system.web/compilation/assemblies とその addSystem.Runtime ほか)2 要素
VB/Samples/WebApp_sample/WebForms_Sample/WebForms_Sample/web.config 接続文字列 ConnectionString_MCN の末尾の ; の有無が CS 側の値に変わった

0_RunAll.ps1 -Lang Both は通った。 ビルドも疎通も問題なかったため、
気付かずにコミットされ得る状態だった(要素の突き合わせで検出した)。

VB 側は HEAD に戻してある。

ファイル名すら揃っていない

CS VB
MVC Web.config Web.config
Web Forms Web.config web.config(小文字)

Windows では区別されないため今まで問題になっていないが、#550 と同じ種類の落とし穴である。

「同一性の実測」は Samples4NetCore にしかない

Samples4NetCore/ANALYSIS.md 4-1 節には、
Samples(net48)との同一ファイル数・差異ファイル数が実測で載っている。

CS / VB 間には、これに相当する記録が無い。
#542(VB の疎通確認)で「疎通の手順はそのまま通る」ことは確かめたが、
設定ファイルの中身までは突き合わせていない。

対応(案)

① まず突き合わせる

CS / VB の対応する設定ファイル(Web.config / app.config / appsettings.json)を
機械的に比較し、差分を「意図的」と「事故」に仕分ける

比較は XML の要素・属性で行う(コメントや空白の差は無視する)。
#549 の作業では、この方法で 2 要素の欠落と 1 属性の変化を検出できた。

要素・属性が HEAD と一致 : False
  - 失われた : /configuration/system.web/compilation/assemblies
  + 増えた   : ... connectionString='...Password=seigi@123;' ...

② 意図的な差分を記録する

「CS / VB で違ってよい箇所」を文書に残す。 置き場所は
CONFIGURATION.md(設定の仕組みは既にここに集約した)か、
ANALYSIS.md の対応表。

③ 事故を直す

意図しない差分を揃える。

④ 再発を防ぐ

丸ごとコピーしない、という運用にする。今回は
「アンカー 1 行の直後にコメント ブロックだけを挿入する」形に直した。

さらに、差分の行数を必ず見る。今回は
「16 行足したはずが +23/−53 になっている」ことで気付いた。

自動チェックまで作るかは要検討。
2_RunAllTests.ps1 のような「期待値との突き合わせ」に載せる手はあるが、
意図的な差分を許容リストで持つ必要があるので、①②を済ませてからが良い。

影響

  • 利用者への影響: 無し(設定値を揃える場合を除く。揃えるなら、その時点で改めて判断する)
  • net48 / net10.0: 主に net48SamplesWeb.config / app.config)。
    Samples4NetCore には VB 版が無いため対象外
  • 検証: 0_RunAll.ps1 -Lang Both

補足

この Issue は「揃える」ことが目的ではない。
違ってよい所は違ってよく、それが記録されていないことが問題である。
記録が無いと、今回のように「同じはずだ」と考えてコピーしてしまう。

関連: #542(VB の疎通確認)、#549(この問題が表面化した作業)、
#550(大文字小文字。ファイル名の web.config / Web.config は同種)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions