【问题标题】:Use newer version of library in ASP.NET Core application在 ASP.NET Core 应用程序中使用更新版本的库
【发布时间】:2021-09-12 02:06:36
【问题描述】:
我有一个使用 Microsoft.AspNetCore version 2.2.0 库的 ASP.NET Core 应用程序。这个库在内部使用System.Text.Encoding.Web version 4.5.0 库。由于安全问题,我们需要升级应用程序以至少使用System.Text.Encoding.Web version 4.5.1 库。
如何在 .NET Core 应用程序中做到这一点?
我们可以在 .NET 应用程序中轻松做到这一点,方法是使用 web.config 文件中的 AssemblyRedirect 属性。
【问题讨论】:
-
绑定重定向是一个.NET框架的概念,.NET Standard和.NET Core上没有绑定重定向。详细的解释在in this link,你可以去看看。
标签:
asp.net-core
asp.net-core-3.1
【解决方案1】:
如 cmets 中所述,.NET Core 中没有绑定重定向。动态链接在运行时解析,并由 .deps.json 清单文件控制,该文件通常由编译器在编译期间生成。
实现所需的一种方法是直接在源项目中引用System.Text.Encodings.Web 4.5.1。这将通过 ASP.NET Core 框架覆盖对 System.Text.Encodings.Web 的任何传递引用:
<ItemGroup>
<PackageReference Include="System.Text.Encodings.Web" Version="4.5.1" />
<PackageReference Include="Microsoft.AspNetCore.App" />
...other dependencies
</ItemGroup>
重新构建代码,编译器现在将生成正确的.deps.json 文件,以便您的程序在运行时加载新版本的System.Text.Encodings.Web。