【发布时间】:2023-03-27 10:03:01
【问题描述】:
我正在尝试将我的解决方案中的所有 DLL 版本与许多项目同步。我注意到我的 app.config 包含几个程序集绑定重定向,如下所示:
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1" />
</dependentAssembly>
但是,我可以通过 NuGet 包管理器告诉我,没有需要合并的包,所有项目都指向该程序集的 4.4.1 版
我尝试遵循this blog post 的建议。我删除了所有绑定重定向并尝试通过以下方式重新生成:
获取项目-全部 |添加绑定重定向
根据NuGet DocumentationAdd-BindingRedirect应该检查项目的输出路径。我假设这意味着 bin 文件夹。
但在清理和重建Get-Project -All | Add-BindingRedirect 后,我的app.config 中仍然会产生相同的重定向。
NuGet Get-Project -All | Add-BindingRedirect 从哪里获得其版本号?
这些不正确的 NuGet 包版本可能来自哪里?
【问题讨论】:
-
版本号不是来自给定 NuGet 包引用的 DLL 吗?如果您安装了包含 1.2.3.4 版本的 A.dll 的 A.nupkg,那么如果添加了重定向的程序集绑定,它将是 1.2.3.4。
-
我有一个使用 [System.ComponentModel.Annotations, 4.5.0] 的 netstandard 项目和一个使用来自同一程序集的 4.2.1 的 [NET Framework 4.7.2] UnitTest 项目。即使为单元测试项目安装了 netstandard 包(这是测试组件所必需的),绑定重定向也会使用 NET 框架版本而不是 packages.config 中包含的版本进行刷新。因此,在绑定重定向自动更新时,似乎没有考虑到 nuget 包。
标签: c# .net visual-studio web-config app-config