我们最近使用NuGet为我们的项目添加了一些依赖项。为了使二进制文件远离版本控制系统,我启用了包还原功能,并将生成的.nuget
文件夹添加到存储库中。此外,具有依赖项的项目将RestorePackages
选项设置为true
,并Import
- nuget.targets
- .nuget
文件夹中的nuget.exe
标记。
因此,在安装了NuGet并且在我的VS设置中启用了包恢复功能的情况下,一切正常。但是,当我想使用此设置在其他计算机上安装依赖项时,我遇到了一些问题。
我的印象是,包含NuGet.Config
的一个优点是允许我在不一定安装NuGet的机器上使用它。但是,在阅读article on consent后,我认为它实际失败的原因是这些机器在其设置中没有启用包恢复功能 - 显然,因为它们在技术上甚至不知道NuGet。
在未安装NuGet的计算机上启用程序包还原的首选方法是什么?除了构建服务器之外,没有安装NuGet实际上是一个有效的选项吗?
或者理想情况下,如果没有自己安装NuGet,有没有办法在解决方案中默认启用包恢复,因此用户无法设置该设置? (我实际上可以想到一个创建%AppData&\NuGet
到{{1}})
答案 0 :(得分:3)
试试这个:
Install-Package NuGetEnablePackageRestore
或者检查package的内容(解压缩),你会发现一些有用的东西可以帮助你(例如,有一种方法可以在MSBuild中设置环境变量)。登录NuGet后,您可以在浏览器中下载该软件包。
答案 1 :(得分:1)
“或者理想情况下,如果NuGet本身没有安装,有没有办法在解决方案中默认启用包恢复,因此用户无法设置该设置?”
安装NuGet并通过“设置”启用同意的替代方法是设置以下环境变量:
set EnableNuGetPackageRestore=true
答案 2 :(得分:0)
如果EnableNuGetPackageRestore(由Alexandre Dion提到)变量用作Msbuild脚本的emmited属性(我强烈怀疑它以这种方式工作,但现在无法检查) - 您可以调整项目或sln将此附加属性设置为true 。
无论如何,according to this你应该至少有nuget.exe作为每个dev的控制台管理器。否则你无法获取引用的nuget包。