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-install
在 Visual 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 一起使用
当使用 "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-install
在 Visual 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 一起使用