博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重装安装包和它的陷阱
阅读量:5902 次
发布时间:2019-06-19

本文共 1821 字,大约阅读时间需要 6 分钟。


本篇目录

前言

之前使用ABP框架做项目时,由于之前电脑装了预览版的VS2015,因而附带地也装了.Net Framework 4.5.3 preview版,而且我的项目也是用的该框架,可是VS正式版出来后,该版本又没有地方去下载,考虑到其他开发人员计算机上以后安装不了该版本的开发包,所以最后我又将项目的框架改回到了.Net Framework 4.5.2,可是之前安装的Nuget包都是针对.Net framework 4.5.3的,所以此时必须要重新安装很多Nuget包。这就引申出来这篇博文了。

重装一个安装包很简单,就是卸载一个安装包,然后再安装回和之前卸载的相同版本的安装包。包含的这两步可以用下面的命令来表示。但是最重要的是在使用它之前要能理解这条命令带给项目的变化。

Update-Package –reinstall 

为何需要重装安装包?

  1. 项目重定位或升级:当项目重定位或者升级,如果安装包由于目标框架的改变而要求重装时,重装安装包是很有用的。在Nuget 2.7,当项目的目标框架改变时,随后我们会立即获得一个生成错误,这是在警告我们有些安装包也可能需要重新安装。对于项目升级,会在项目的升级日志中展示一个错误。
  2. 你破坏了项目:NuGet不会阻止你从已经添加的安装包中移除一些东西,因此无心地修改一些安装包安装的内容是很容易的,这样就可能破坏项目。这时,你可能需要回到当初完好的状态。
  3. 安装包升级破坏了项目:更新安装包也可能破环项目。这种失败通常是由于依赖包直接升级时造成的,或者因为其他的安装包升级时造成了依赖包的升级。此时,你肯定想回到项目破坏前时依赖包的老版本状态。
  4. 提升NuGet包开发周期:开发包的作者通常需要重装相同版本的安装包来测试一下它的表现,而Install-Package命令没有提供可以强制重装安装包的‘-force’选项。

因此,Update-Package -reinstall就是为了满足这些需求的。

何时需要重装以及需要注意什么?

重装安装包看上去好像很简单,但是,也可能很棘手,因为可能会受下面的因素影响,也可能会影响它们:

  1. 项目重定位或升级时,项目的目标框架改变了;
  2. 安装包的依赖和它们的版本;
  3. 独立的安装包和它们的版本。

上面的这些情况会覆盖在下面的细节中:

  1. 根据项目重定位的目标框架重装安装包:
    1. 简单的情况,只需要使用Update-Package –reinstall 重装安装包就可以解决该棘手的问题了。安装在旧的目标框架的安装包会被卸载,然后相同的安装包会再次安装到该项目的当前框架中。
    2. 在某些情况下,可能会发生安装包不支持新定位的目标框架的情况。
      • 如果安装包支持便携的类库且该项目定位到一个该安装包不再支持的组合平台,那么它的引用在重装安装包之后将会丢失。
      • 对于你正在直接使用的或者作为依赖安装的包都可能遇到这个问题。你正在直接使用的安装包支持新的目标框架而它的依赖不支持,这种情况也是可能的。
      • 当重定位应用程序之后,如果提示生成错误或运行时错误,那么你可能需要返回到原来的目标框架或者搜索可以很好地支持新的目标框架的可替换的安装包。
  2. 当涉及到包的依赖版本时重装安装包:
    1. 大家都知道使用‘Update-Package –reinstall’重装安装包,相同版本的安装包就会安装。然而,对于包的依赖不是这样的。要安装的依赖包的版本取决于包依赖版本约束(如果提供了的话,如果没有提供就是最新的)。而工作最好的包依赖的版本取决于你,使用下面之一即可:
      • Update-Package –reinstall ,更新包依赖时要求修复问题
      • Update-Package –reinstall -ignoreDependencies,更新包依赖时可能导致破坏。
    2. 如果Update-Package -reinstall命令使得依赖包回滚到比之前安装的版本更旧,那么你可以使用Update-Package 把它更新到更新的版本。
  3. 当涉及独立的版本时重装安装包:
  • 不要感到吃惊, Update-Package –reinstall不会改变独立安装包的版本。但是要考虑独立包的版本来决定是否应该对它重装。
本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/ReInstallingPackages.html,如需转载请自行联系原作者
你可能感兴趣的文章
《将博客搬至CSDN》的文章
查看>>
setjmp 与 longjmp
查看>>
MyBatis 开发使用笔记(二)
查看>>
Hibernate Architecture
查看>>
Git 分支
查看>>
CentOS下安装配置Nginx
查看>>
[开源中国]android客户端-异常捕获
查看>>
Android 源代码中增加新apk
查看>>
Groovy & Android编译中的异常(@CompileStatic)
查看>>
姜源:新媒体时代下的全平台海外推广
查看>>
淘宝前后端分离开发模式实践
查看>>
思科与中国共成长_郑凯兵
查看>>
Inception自动审核系统设计与实现
查看>>
JSON.parse()和JSON.stringify()
查看>>
新手跳坑指南《二》:app.json之pages路径重复错误
查看>>
javascript 分模块架构
查看>>
Calendar常见用法
查看>>
我的友情链接
查看>>
mysql 数学计算
查看>>
C语言和HTML想法
查看>>