zoukankan      html  css  js  c++  java
  • 使用NuGet时的一个乌龙

    问题描述

    最近自己做的一个项目,计划开始使用NuGet来管理dll,但是遇到一个奇怪,但是结果证明是个乌龙的问题。

    新建一个WebApi项目,使用NuGet管理第三方dll,其中有引用Newtonsoft.Json,版本为5.0.6,确认项目引用也没有问题如下图。

    clipboard

    clipboard[1]

    接着将项目上传到GitHub上,上传的时候会忽略NuGet生成的packages目录。

    然后,从GitHub克隆项目到本地,在编译项目,还没有还原NuGet引用时,Newtonsoft.Json引用的是系统的,如下图。

    clipboard[2]

    然后,重新编译项目,还原NuGet引用,同时也生成了packages目录。但是Newtonsoft.Json显示还是引用的系统的4.5.0版本,但是查看生成的bin目录,的确是NuGet引用的5.0.6版本。

    clipboard[3]

    所以,问题来了,为什么没有引用NuGet的packages目录中的,却还是引用系统的呢?

    分析思路

    首先,查看MSBuild的生成输出,发现copy的路径没有问题,如下图。

    clipboard[4]

    然后,能想到的是使用程序集重定向,强制它使用5.0.6版本,所以在web.config中加入下面的代码。

    clipboard[5]

    重新生成项目, 发现项目引用的依旧是系统的,如下图。

    clipboard[6]

    到这里,能想到的方法基本都想了,但为什么项目还是显示引用系统的dll呢。

    然后就问同事,同事过来就刷新了一下项目,居然就ok了,显示正确地引用了NuGet的packages目录。

    原来只是没有刷新,项目上显示引用旧的而已,哎,真是个大乌龙啊!

    所以在这里总结出来,以免以后还犯这样的低级错误。

  • 相关阅读:
    价值观
    周记 改
    周记
    C语言问卷调查
    icon踩坑记录
    console.log(a)和console.log(window.a)的区别?
    记录一次微信二次分享的优化过程
    在jQuery中使用自定义属性
    10个JS技巧
    日常工作总结 2019/10/10
  • 原文地址:https://www.cnblogs.com/mcgrady/p/4814196.html
Copyright © 2011-2022 走看看