【问题标题】:Nuget find reference in package folder but add it from anotherNuget 在包文件夹中查找引用,但从另一个添加它
【发布时间】:2019-05-17 19:02:35
【问题描述】:

我正在向 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 说他在特定文件夹中找到了包,但添加了对另一个文件夹的引用?另外,如果他在那里找到“包”中的引用,如何让他添加引用?

【问题讨论】:

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


    【解决方案1】:

    有人可以向我解释为什么会发生这种情况吗?为什么 Nuget 说他在特定文件夹中找到了包,但添加了对另一个文件夹的引用?另外,如果他在那里找到了“包”中的引用,如何让他添加引用?

    那是因为.NET Framework4.6.1开始支持.NET Standard 2.0

    那些包(System.netSystem.Threading.Tasks.DataFlow 等) 有一个netstandard2.0 构建。当 netstandard2.0 程序集是 桌面项目中引用,nuget团队自动添加所有 使其工作所需的程序集:不再有包引用。 当 nuget 团队添加比您之前的新的 System.Net.Http.dll 以前使用过,因为那是 netstandard2.0 的一部分。

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

    <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>
    

    您可以查看以下主题以获取更多详细信息:

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      看来 DLL 可能是手动添加的。

      您应该尝试重新安装所有 NuGet:

      Update-Package -reinstall -ProjectName <yourproject>
      

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

      【讨论】:

        猜你喜欢
        • 2020-01-12
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 2017-06-27
        • 1970-01-01
        相关资源
        最近更新 更多