System.Net.Httpnuget 上的最新版本是 4.3.4。但即使是最新的 .Net Framework 4.8 也附带了这个库的 4.2.0。
即使我添加了 nuget 包,Visual Studio 2019 仍会System.Net.Http.dll从 .Net Framework 安装文件中获取。
有没有办法解决这个问题?
.Net Core 仍然没有对 wpf 和 winforms 的设计器支持,这就是为什么我需要它与 .net 框架一起使用。
完全同意你的看法,这很令人困惑,但最后绑定重定向是你的朋友,这里与你的 app.config / web.config 文件一起使用。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
上面的代码片段强制您的代码中出现的任何版本都将使用“newVersion”属性中指定的版本。
下表为您提供了有关版本差异的一些见解。
Microsoft 本身有关绑定重定向的一些信息。
我有几个项目被迫安装 .NETStandard 2.0,因为其他一些包依赖于它,即使我们只使用 .NET 4.6.1。经过很长时间的谷歌搜索(抱歉,我无法指出我在哪里找到了这个,因为它是很久以前完成的),我能够弄清楚当你有使用 netstandard2 版本的程序集的包时,System.Net.Http即使您没有 Dimi 所解释的绑定重定向,VS 也会自动强制使用版本 4.2.0。与 netstandard2 一起安装的软件包包括System.Buffers、System.Collections.Immutable、System.Memory、System.Runtime.Compilers.Unsafe和System.Text.Encodings.Web(我确信还有更多)。
我最终要做的是手动编辑 .csproj 文件并强制这些程序集使用 netstandard1.x 版本。
<Reference Include="System.Memory, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\packages\System.Memory.4.5.1\lib\netstandard2.0\System.Memory.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
例如,提示路径System.Memory指向netstandard2.0文件夹。如果您转到包文件夹,您会发现该程序集有三种风格:netcoreapp211、netstandard1.1和netstandard2.0。我不想要第一个,因为我没有使用 .NET Core,所以我将其更改为使用 1.1。netstandard2.0对指向 1.0 或 1.1(以可用者为准)的所有程序集执行此操作后,VS 允许我使用System.Net.Http.4.3.4实际安装的包。
我真的不知道为什么会这样,因为我对 .NETStandard 几乎一无所知,但它确实有效。
| 归档时间: |
|
| 查看次数: |
6917 次 |
| 最近记录: |