Sha*_*eKm 22 .net c# nuget service-fabric-stateful
我的VS解决方案中有几个项目.每当我将"System.Net.Http"NuGet包添加到它显示为4.2.0.0版本的包时.然后我也这样做并添加相同的NuGet包,然而,另一个说版本.4.1.1.2
然后我收到警告:
发现System.Net.Http之间存在冲突
EDIT1:
Gathering dependency information took 1.7 sec
Attempting to resolve dependencies for package 'System.Net.Http.4.3.3' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'System.Net.Http.4.3.3'
Resolved actions to install package 'System.Net.Http.4.3.3'
Retrieving package 'System.Net.Http 4.3.3' from 'nuget.org'.
Adding package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to folder 'C:\...Service\packages'
Added package 'System.Net.Http.4.3.3' to 'packages.config'
Successfully installed 'System.Net.Http 4.3.3' to ....Service
Executing nuget actions took 2.05 sec
Time Elapsed: 00:00:03.8937113
Run Code Online (Sandbox Code Playgroud)
请注意安装了正确的版本,但是=> Props =>版本说4.1.1.2
rse*_*nna 35
编辑:仅在使用.NET Framework时才会发生这种情况.在.NET Core/Standard System.Net.Http版本中,最新的汇编版本似乎总是4.1.2.0 - 没有4.2.0.0版本可用.
关于System.Net.Http的问题是方式,方式更复杂,然后这里的答案似乎暗示......
System.Net.HttpNuGet包,但不,它不会安装相同程序集的最新版本(它包含System.Net.Http程序集的4.1.1.2版本,而不是4.2.0.0).System.Buffers(版本4.5.0对我有用).TL; DR:
System.Buffers如果要确保使用System.Net.Http4.2.0.0程序集,请将4.5.0+ NuGet引用添加到项目中.
参考文献:
Neo*_*Neo 15
在完成了这里提出的所有解决方案和本答案中引用的参考文献后,我终于彻底解决了这个问题.我相信任何遇到此问题的人都应该这样做:
System.Net.Http不受NuGet管理的引用(对于使用PackageReference的项目,您应该看到NuGet符号
在解决方案资源管理器中的引用旁边).System.Net.Http如果您确定您的项目需要,请使用相应的NuGet包替换已删除的引用System.Net.Http(尝试在没有它的情况下构建).对于使用packages.config的项目,请特别注意确保需要引用System.Net.Http并且他们也在使用NuGet.System.Net.Http无论如何,通过NuGet 删除和重新添加(对于引用它的所有项目),即使已经使用NuGet引用,也可能有所帮助.我发现第2步可能会导致一些不相交的地方.如果您稍后发现在某处添加引用后由于显式不匹配而导致运行时异常(即使在单元测试期间),请从相关网站项目中删除所有绑定重定向,然后重新添加警告中给出的建议的重定向每步6.
我花了很多时间试图有条不紊地解决这个问题,所以我相信上面的步骤可以完全解决大多数人的问题,尽管对于不寻常的情况可能需要一些横向思考.如果这对您有用(或不起作用),请告诉我.
当你引用框架System.Net.Http时,这往往会发生,但是你的一个包引用需要NuGet包System.Net.Http.
看看你是否有对该程序集的引用,删除它并安装NuGet包
有一个新的解决方案可以在 2018 年 10 月 9 日生效。
System.Net.Http到最新版本 4.3.4。如果您的项目具有新的项目结构,请对其进行编辑并确保它包含以下包引用:
<PackageReference Include="System.Net.Http" Version="4.3.4" />
Run Code Online (Sandbox Code Playgroud)搜索您的解决方案并删除 System.Net.Http 的任何现有绑定重定向,它们将如下所示
<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>
Run Code Online (Sandbox Code Playgroud)重新构建,警告现在应该消失了,您的代码应该可以正常构建并运行
您可以强制安装版本,这样既可以使两个项目对齐,也可以在输出窗口中找到一条消息,提示您出了什么问题或依赖项。由于官方链接未列出任何4.2版本,因此我将这样做(在解决方案范围内)
Install-Package System.Net.Http -Version 4.1.1
Run Code Online (Sandbox Code Playgroud)
或对于两个项目
Get-Project ProjectName | Install-Package System.Net.Http -Version 4.1.1
Run Code Online (Sandbox Code Playgroud)
或者,甚至更好(使用最新版本)
Install-Package System.Net.Http -Version 4.3.3
Run Code Online (Sandbox Code Playgroud)
编辑
显然,您不是第一个体验到这一点的人。这里的答案如何?基本上,您可以对齐两个项目配置文件的这一部分:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.2" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
您可能必须调整令牌值。以防万一,您是否可以为两个项目粘贴配置文件=
| 归档时间: |
|
| 查看次数: |
15241 次 |
| 最近记录: |