使用" 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
答案 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
:
显然,当您在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中使用它: