我尝试使用Nuget Update和Nuget restore,但实际上它们并不相同,这就是原因:
我创建了一个Nuget pkg,仅用于分发可执行文件。当我安装Nuget时,可执行文件将添加到我的项目中,因此我可以引用它并在我的应用程序中运行它。
现在,我不希望每个开发人员都必须安装Nuget才能在其项目中包含可执行文件,但我只希望在构建项目时添加.exe。当然,在配置文件中也有对该软件包的引用。
如果运行Update-Package -Id -reinstall
(使用VS的软件包管理器),则将带有.exe的文件夹添加到项目根目录,但是如果执行nuget update
或nuget restore
(使用nuget CLI),仅将.exe重新添加到packages文件夹中。
之所以需要运行nuget CLI,是因为我使用的是TeamCity,并且想在自动构建运行时添加.exe。
我希望这是有道理的。
答案 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)"
希望这会有所帮助。