Skip to content

サンプルに、使っていない参照と陳腐化した参照が残っている #554

Description

@OsscJpDevInfra

概要

サンプルの設定に、実態と合っていない参照が残っている。

#553(CS / VB の設定同期)で突き合わせをした際に見つかった。
同期とは別軸の話なので、切り出す。

2 種類ある。

内容
① 使っていない参照 パッケージも <Reference> も在るが、コードが使っていない
② 陳腐化した参照 bindingRedirect が、実際に配布されるアセンブリと違う版を指している

現状

① 使っていない参照 — Microsoft.AspNet.FriendlyUrls

WebForms_SampleFriendlyUrls は、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.JsonbindingRedirect

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.configcsproj / 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 Both3_SmokeTest.ps1 -Lang Both

関連

#553(CS / VB の設定同期。ここで見つけた)

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