我正在努力将新项目添加到ASP.NET MVC中的现有解决方案。一切正常,直到我更新了其中一个软件包。我发现对“ System.Net.Http”的引用指向的位置与我想要的位置不同。这就是对象浏览器的外观,我在不同位置有3个System.Net.Http程序集:
当我尝试通过Nuget重新安装软件包时,在输出控制台中收到一条消息:
Found package 'System.Net.4.3.2' already exists in folder 'C:\MyProject\packages'
但是当我查看项目引用时,路径是“ C:\ Program Files(x86)\ Microsoft Visual ...”。
有人可以向我解释为什么会这样吗?为什么Nuget会说他在特定文件夹中找到该程序包,但添加了对另一个程序的引用?如果他在其中找到引用,还如何使他从“包”中添加引用?
答案 0 :(得分:1)
有人可以向我解释为什么会这样吗?为什么Nuget会说他在特定文件夹中找到该程序包,但添加了对另一个程序的引用?如果他在其中找到引用,还如何使他从“包”中添加引用?
因为.NET Standard 2.0
从4.6.1
开始支持System.net
,所以
这些软件包(
System.Threading.Tasks.DataFlow
,netstandard2.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可能是手动添加的。
您应该尝试重新安装所有的NuGet:
Update-Package -reinstall -ProjectName <yourproject>
但是请确保您的解决方案是最新的,并且对GIT / SVN版本控制没有任何更改,因为它可能会改变很多事情。