Nuget.exe Visual Studio 和 Web/App.configs 中的更新与更新包

Nuget.exe update vs Update-Package in Visual Studio and Web/App.configs

当使用 "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

Why is the behavior inconsistent?

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

正如我们所知,配置转换为包提供了一种简单的方法来在安装包时修改 web.config 或 app.config 。而当我们更新一个NuGet包时,NuGet会卸载旧版本的nuget包,然后安装最新的nuget包到项目中。

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

操作nuget install包在NuGet CLI:

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

相反,操作 nuget-installVisual Studio 上打包:

Installs a package and its dependencies into a project

所以在 Visual Studio 上使用更新包可以适当地转换 app.configs 文件。

And is there a way for the CLI to adhere to the VS behavior (which I want)?

据我所知,答案恐怕不是。因为包管理器控制台提供了对 visual studio 对象的访问。如果没有 Visual Studio:

,我们无法将它与 NuGet CLI 一起使用

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