Nuget在包文件夹中找到引用,但从另一个文件夹添加它

时间:2018-12-17 11:57:19

标签: c# visual-studio nuget assemblies .net-framework-version

我正在努力将新项目添加到ASP.NET MVC中的现有解决方案。一切正常,直到我更新了其中一个软件包。我发现对“ System.Net.Http”的引用指向的位置与我想要的位置不同。这就是对象浏览器的外观,我在不同位置有3个System.Net.Http程序集:

  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.6.2 \ System.Net.Http.dll(4.0.0.0)
  • C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll(4.2.0.0)
  • C:\ MyProject \ packages(4.1.1.1)

当我尝试通过Nuget重新安装软件包时,在输出控制台中收到一条消息:

Found package 'System.Net.4.3.2' already exists in folder 'C:\MyProject\packages'

但是当我查看项目引用时,路径是“ C:\ Program Files(x86)\ Microsoft Visual ...”。

有人可以向我解释为什么会这样吗?为什么Nuget会说他在特定文件夹中找到该程序包,但添加了对另一个程序的引用?如果他在其中找到引用,还如何使他从“包”中添加引用?

2 个答案:

答案 0 :(得分:1)

  

有人可以向我解释为什么会这样吗?为什么Nuget会说他在特定文件夹中找到该程序包,但添加了对另一个程序的引用?如果他在其中找到引用,还如何使他从“包”中添加引用?

因为.NET Standard 2.04.6.1开始支持System.net,所以

  

这些软件包(System.Threading.Tasks.DataFlownetstandard2.0等)   具有netstandard2.0版本。当System.Net.Http.dll程序集是   在桌面项目中引用, nuget团队会自动添加所有   使其有效所需的组件:不再有软件包引用。   当nuget团队添加比您更新的<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.1.1.1" /> </dependentAssembly> </assemblyBinding> 时   以前使用的,因为它是netstandard2.0的一部分。

要解决此问题,您可以手动添加绑定重定向:

html, body {
   background-color: silver;
   height: 400%;
   width: 100%;
   overflow-x:hidden;

}

您可以检查以下线程以获取更多详细信息:

System.Net.Http v4.2.0.0 being copied/loaded from MSBuild tooling

Issues with .NET Standard 2.0 with .NET Framework & NuGet

希望这会有所帮助。

答案 1 :(得分:0)

似乎该DLL可能是手动添加的。

您应该尝试重新安装所有的Nu​​Get:

Update-Package -reinstall -ProjectName <yourproject>

但是请确保您的解决方案是最新的,并且对GIT / SVN版本控制没有任何更改,因为它可能会改变很多事情。