Nuget.exe更新与Visual Studio和Web / App.configs中的Update-Package

时间:2017-12-01 21:40:47

标签: visual-studio nuget nuget-package-restore

使用" nuget update(projectFile | packages.config)-Id(packageName)-NonInteractive"通过命令行更新项目的包版本时我生成了一堆web.configs(使用转换),并且不会转换现有的app.configs。

通过VS(Update-Package -Id(packageName))更新同一项目的相同软件包版本时,没有生成web.configs,并且会转换相应的app.configs。

我意识到创建的web.config没有任何负面影响,但额外的文件混乱困扰着我。

为什么行为不一致? CLI是否有办法遵守VS行为(我想要的)?

使用最新版本的nuget.exe 4.4.1

1 个答案:

答案 0 :(得分:1)

  

为什么行为不一致?

这是因为NuGet CLI和Visual Studio之间nuget install命令的不同行为。

众所周知,配置转换为程序包在安装软件包时修改web.config或app.config 提供了一种简单的方法。当我们更新NuGet包时,NuGet将卸载旧版本的nuget包,然后将最新的nuget包安装到项目中。

但是,NuGet CLI和Visual Studio之间nuget install命令的行为是不同的。

NuGet CLI 上的操作nuget install

enter image description here

显然,当您在NuGet CLI上使用update-packages操作时,NuGet不会重新转换app.configs

相反,Visual Studio上的操作nuget-install包:

  

将程序包及其依赖项安装到项目中

因此,在Visual Studio上使用update-package可以适当地转换app.configs文件。

  

CLI是否有办法遵守VS行为(我   想)?

据我所知,恐怕答案不是。因为包管理器控制台提供的是对visual studio对象的访问。如果没有Visual Studio,我们无法在NuGet CLI中使用它:

https://github.com/NuGet/Home/issues/1512