如何使用Nuget CLI复制VS2017软件包管理器命令“ Update-Package -reinstall”

时间:2018-07-18 22:32:19

标签: visual-studio nuget teamcity package-managers nuspec

我尝试使用Nuget Update和Nuget restore,但实际上它们并不相同,这就是原因:

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

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

如果运行Update-Package -Id -reinstall(使用VS的软件包管理器),则将带有.exe的文件夹添加到项目根目录,但是如果执行nuget updatenuget restore(使用nuget CLI),仅将.exe重新添加到packages文件夹中。

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

我希望这是有道理的。

1 个答案:

答案 0 :(得分:3)

  

如何使用Nuget CLI复制VS2017软件包管理器命令“ Update-Package -reinstall”

恐怕您无法使用NuGet CLI执行此类操作。那是因为 NuGet CLI不会修改项目文件或packages.config 。修改项目文件时,需要通过NuGet API in Visual Studio进行,但是只有程序包管理器控制台才能提供对Visual Studio对象的访问权限:

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

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

当然,还有一个简单的方法可以解决此问题,只需在项目中添加 pre-build事件,即可将可执行文件复制到项目根目录:

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

希望这会有所帮助。