问题描述

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

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

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

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

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

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

分析思路

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

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

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

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

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

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

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

使用NuGet时的一个乌龙的更多相关文章

  1. 鼠标经过导航中li时,一个彩色模块跟着鼠标移动

    1.鼠标经过导航中li时,一个活动的li跟随鼠标移动,最终移动到鼠标的停留的位置.(如需鼠标离开后让活动的li回到初始位置,则用jq hover事件,当鼠标离开时,给活动的li设置left是0) 2. ...

  2. QT:窗口最小化时显示一个小浮标

    有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思 ...

  3. 路由器安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错误。向目标系统中安装busybox-initramfs软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细

    公司的路由器要ubuntu服务器进行路由网络功能的管理,在安装的时候出现下面的错误提示: 安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错 ...

  4. 关于pyinstaller打包程序时设置icon时的一个坑

    关于pyinstaller打包程序时设置icon时的一个坑     之前在用pyinstaller打包程序的时候遇到了关于设置图标的一点小问题,无论在后面加--icon 或是-i都出现报错.查了下st ...

  5. 运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签

    1.运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签,结束调试时窗口又关闭了,特别麻烦. 在用swagger调试接口时,好不容易输入了测试数据,然而窗口关闭了,再次调试又得重新输入. 解决 ...

  6. java 线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告

    线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把 ...

  7. 记使用WaitGroup时的一个错误

    记使用WaitGroup时的一个错误 近期重构我之前写的server代码时,不当使用了WaitGroup,碰到了个错误,记录下. package main import ( "fmt&quo ...

  8. 如何强制ffmpeg编码时输出一个关键帧

    http://blog.csdn.net/ashlingr/article/details/7829429 如何强制ffmpeg编码时输出一个关键帧   如何强制ffmpeg编码时输出一个关键帧 AV ...

  9. 页面进行ajax时 显示一个中间浮动loading

    先发效果图,加载东西的时候如果没有设计或者其它提示会降低用户体验,所以写了个简单的loading弹层. 适用于触屏和pc页面. /* 页面进行ajax时 显示一个中间浮动loading @auther ...

随机推荐

  1. pfx,cer转pem,并对通过pem文件进行签名与验签

    因为PHP无法读取.pfx文件,所以可以先转换为.pem文件然后在读取里面的数据,可以读取.cer文件,为了两方面统一,就都换成.pem然后再进行加签和验签. sign.php <?php de ...

  2. linux 目录结构图解

    参考资料:http://www.linuxidc.com/Linux/2016-08/134701.htm

  3. random使用

    package com.cz.test; import java.util.Random; public class RandomTest { public static void main(Stri ...

  4. bootstrap 图片轮播效果

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http: ...

  5. mysql存入数据出错总结

    ELECT t0.accusation_des, t0.submit_time, t0.result, t0.handle_time, t1.content, t4.nick_name,t5.cont ...

  6. js获取select字段值的方法

    var index = obj.selectedIndex; // 选中索引 var value = obj.options[index].value; // 选中值 var schoolName = ...

  7. 使用myeclipse建立maven项目(重要)

    maven是管理项目的,myeclipse是编写代码的.第一次写项目都要配置好多东西,很麻烦,now 来看看怎样新建一个maven项目. 工具/原料   myeclipse maven 方法/步骤   ...

  8. JAVASCRIPT事件详解-------原生事件基础....

    javaScirpt事件详解-原生事件基础(一)   事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...

  9. (四)linux网络编程

    一.CS架构,BS架构 (1)CS架构介绍(client server,客户端服务器架构),例如:qq.360网盘(2)BS架构介绍(broswer server,浏览器服务器架构)例如:浏览器 二. ...

  10. C 语言预处理

    在嵌入式系统编程中,不管是内核的驱动程序还是应用程序的编写,都涉及到大量的预处理与条件编译,这样做的好处主要体现在代码的移植性强以及代码的修改方便等特性,因此引入了预处理与条件编译的概念.在C语言的程 ...