如何使用 Nuget CLI 重现 VS2017 包管理器命令 "Update-Package -reinstall"

How reproduce VS2017 Package Manager command "Update-Package -reinstall" with Nuget CLI

我试过 Nuget 更新、Nuget 恢复,但它们实际上并不相同,原因如下:

我创建了一个 Nuget pkg 仅用于分发可执行文件。当我安装 Nuget 时,可执行文件被添加到我的项目中,因此我可以在我的应用程序中引用它并 运行 它。

现在,我不希望每个开发人员都必须安装 Nuget 才能在他们的项目中包含可执行文件,但我只希望在构建项目时添加 .exe。当然,存在对配置文件中包的引用。

如果我 运行 Update-Package -Id -reinstall(使用 VS 的包管理器)一个带有 .exe 的文件夹被添加到项目根目录,但如果我这样做 nuget updatenuget restore(使用 nuget CLI)它只会将 .exe 重新添加到包文件夹中。

我需要 运行 nuget CLI 的原因是因为我正在使用 TeamCity 并且我想在自动构建 运行s 时添加 .exe。

我希望它有意义。

How reproduce VS2017 Package Manager command “Update-Package -reinstall” with Nuget CLI

恐怕您无法使用 NuGet CLI 执行此类操作。那是因为 NuGet CLI 不修改项目文件或 packages.config。当我们修改项目文件时,我们需要通过 NuGet API in Visual Studio 来完成,但是只有包管理器控制台可以提供对 visual studio 对象的访问:

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

这就是为什么我说最简单的方法是在 中使用命令行 Update-Package -Id -reinstall。然后我也给了你另一种从根本原因解决这个问题的方法,使用.targets文件将可执行文件复制到项目根目录,请查看我的更新答案。

当然,还有一个简单的思路可以解决这个问题,只要在你的项目中添加一个pre-build event,将可执行文件复制到项目根目录即可:

xcopy  /Y "$(SolutionDir)packages\MyToolPackage.1.0.0\Tools\wkhtmltopdf.exe" "$(ProjectDir)"

希望对您有所帮助。