概要
サンプルの設定に、実態と合っていない参照が残っている。
#553(CS / VB の設定同期)で突き合わせをした際に見つかった。
同期とは別軸の話なので、切り出す。
2 種類ある。
|
内容 |
| ① 使っていない参照 |
パッケージも <Reference> も在るが、コードが使っていない |
| ② 陳腐化した参照 |
bindingRedirect が、実際に配布されるアセンブリと違う版を指している |
現状
① 使っていない参照 — Microsoft.AspNet.FriendlyUrls
WebForms_Sample の FriendlyUrls は、CS / VB とも使用箇所が全部コメントアウトされている。
// CS : App_Start/RouteConfig.cs
//using Microsoft.AspNet.FriendlyUrls;
//routes.EnableFriendlyUrls(settings);
' VB : App_Start/RouteConfig.vb
'Imports Microsoft.AspNet.FriendlyUrls
'routes.EnableFriendlyUrls(settings)
にもかかわらず、パッケージと参照は残っている。
<!-- packages.config -->
<package id="Microsoft.AspNet.FriendlyUrls.Core" version="1.0.2" targetFramework="net48" />
<package id="Microsoft.AspNet.FriendlyUrls.Core.ja" version="1.0.2" targetFramework="net48" />
<!-- WebForms_Sample.csproj / .vbproj -->
<Reference Include="Microsoft.AspNet.FriendlyUrls">
<HintPath>..\packages\Microsoft.AspNet.FriendlyUrls.Core.1.0.2\lib\net45\Microsoft.AspNet.FriendlyUrls.dll</HintPath>
</Reference>
CS / VB は完全に一致している。 ずれてはいないので #553 の対象ではない。
#553 では、これと似て非なるものを 2 件消してある。
Microsoft.AspNet.WebApi(MVC_Sample)と Microsoft.AspNet.FriendlyUrls(WebForms_Sample)の
メタ パッケージで、こちらは <Reference> がどこからも指していなかった
(実体は .Core / .Client / .WebHost 側)。純粋に余計な行だったため、その場で消した。
本件の .Core / .Core.ja は、<Reference> が実際に指している点が違う。
消すなら csproj / vbproj にも手を入れる(CS / VB の 4 ファイル)。
② 陳腐化した参照 — Newtonsoft.Json の bindingRedirect
CS/Frameworks/Tests/TestBatch/SimpleBatch/app.config
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
実際に配布されるアセンブリは 13.0.0.0(実測)。
12.0.0.0 は存在しないので、この範囲に入る要求は解決に失敗する。
VB 側の同種のずれ(11.0.0.0 → 実体 13.0.0.0)は #553 で直した
(WSClientWin_sample / WSClientWin2_sample / WSClientWPF_sample)。
CS 側のこれは同期の話ではないため、手を付けていない。
検討したいこと
① をどうするか
コメントアウトの意図が判断できない。
- 例として残しているなら、参照も残すのが筋。ただし「なぜ残すのか」を書いておかないと、
次に見た人が同じ判断に迷う
- 単なる残骸なら、パッケージと
<Reference> ごと消す
| 案 |
|
| A: 消す |
packages.config + csproj / vbproj の 4 ファイル。ビルドで確認 |
| B: 残して、理由を書く |
RouteConfig に「機能の例として残している」旨を 1 行 |
| C: 有効にする |
拡張子なし URL を実際に使う。サンプルの挙動が変わるので別の判断が要る |
② をどうするか
実体に合わせて 13.0.0.0 にするのが素直。
ただし**bindingRedirect は NuGet の生成物**なので、手で直すとパッケージ操作で戻る。
Frameworks/ANALYSIS.md の
「依存パッケージのバージョン ドリフト」と同じ枠で扱うのが妥当と考える。
他にも無いか
今回は目に付いた 2 件だけを挙げている。全体は洗っていない。
洗うなら、次のような観点になる。
packages.config に在って、csproj の <Reference> から参照されていないパッケージ
<Reference> に在って、コードが使っていないアセンブリ
bindingRedirect の版と、実際に配布されるアセンブリの版の食い違い
3 つ目は機械的に確かめられる(AssemblyName.GetAssemblyName() で実体の版を取れる)。
影響
- 利用者への影響: 無し(サンプルの参照整理のみ)。
ただし ① で C(有効にする) を選ぶ場合は、WebForms_Sample の URL が変わるため影響が出る
- net48 / net10.0: net48 のみ(
packages.config は net48 の仕組み)
- 検証:
1_BuildAll.ps1 -Lang Both + 3_SmokeTest.ps1 -Lang Both
関連
#553(CS / VB の設定同期。ここで見つけた)
概要
サンプルの設定に、実態と合っていない参照が残っている。
#553(CS / VB の設定同期)で突き合わせをした際に見つかった。同期とは別軸の話なので、切り出す。
2 種類ある。
<Reference>も在るが、コードが使っていないbindingRedirectが、実際に配布されるアセンブリと違う版を指している現状
① 使っていない参照 —
Microsoft.AspNet.FriendlyUrlsWebForms_SampleのFriendlyUrlsは、CS / VB とも使用箇所が全部コメントアウトされている。にもかかわらず、パッケージと参照は残っている。
CS / VB は完全に一致している。 ずれてはいないので
#553の対象ではない。② 陳腐化した参照 —
Newtonsoft.JsonのbindingRedirectCS/Frameworks/Tests/TestBatch/SimpleBatch/app.config実際に配布されるアセンブリは 13.0.0.0(実測)。
12.0.0.0 は存在しないので、この範囲に入る要求は解決に失敗する。
検討したいこと
① をどうするか
コメントアウトの意図が判断できない。
次に見た人が同じ判断に迷う
<Reference>ごと消すpackages.config+csproj/vbprojの 4 ファイル。ビルドで確認RouteConfigに「機能の例として残している」旨を 1 行② をどうするか
実体に合わせて
13.0.0.0にするのが素直。ただし**
bindingRedirectは NuGet の生成物**なので、手で直すとパッケージ操作で戻る。Frameworks/ANALYSIS.mdの「依存パッケージのバージョン ドリフト」と同じ枠で扱うのが妥当と考える。
他にも無いか
今回は目に付いた 2 件だけを挙げている。全体は洗っていない。
洗うなら、次のような観点になる。
packages.configに在って、csprojの<Reference>から参照されていないパッケージ<Reference>に在って、コードが使っていないアセンブリbindingRedirectの版と、実際に配布されるアセンブリの版の食い違い3 つ目は機械的に確かめられる(
AssemblyName.GetAssemblyName()で実体の版を取れる)。影響
ただし ① で C(有効にする) を選ぶ場合は、
WebForms_Sampleの URL が変わるため影響が出るpackages.configは net48 の仕組み)1_BuildAll.ps1 -Lang Both+3_SmokeTest.ps1 -Lang Both関連
#553(CS / VB の設定同期。ここで見つけた)