我已在我的解决方案上设置了NuGet Package Restore,它在我的本地计算机上运行良好。我按照这里提供的说明进行操作:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
我遇到的问题是在我的构建服务器上发生以下错误:
默认情况下禁用包还原。要获得同意,请打开Visual Studio选项对话框,单击“程序包管理器”节点,然后选中“允许NuGet在构建期间下载缺少的程序包”。您也可以通过设置环境变量' EnableNuGetPackageRestore'来同意。到了' true'
不幸的是,我无法访问构建服务器,因为它是在站点外控制的,因此无法更新环境变量。还有其他方法吗?我可以添加到解决方案文件或类似的任何东西,以允许包恢复?
答案 0 :(得分:15)
试试这个包:
Install-Package NuGetEnablePackageRestore
答案 1 :(得分:14)
如果您不能100%确定服务器的配置方式,NuGet可以使用本地设置来处理其行为,这种行为可能无法预测。
我更喜欢将NuGet设置放在版本控制且位于单个位置的<sln root>/.nuget/NuGet.targets
文件中。我对此进行了3次快速编辑<sln root>/.nuget/NuGet.targets
,编辑后应如下所示:
更改1 :
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
更改2 :
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
我的评论:笨拙的逻辑,但想到“要求同意不等于假必须 是真的“(原始)为”要求同意等于真必须 true “(已翻译),将最后一部分更改为有意义 “ false ”(编辑)
更改3 :我还添加/取消注释了<PackageSource ... >
标记,以删除对
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<PackageSource Include="https://nuget.org/api/v2/" />
</ItemGroup>
答案 2 :(得分:5)
当我尝试使用Jenkins构建我的一个项目时,我遇到了这个问题,并通过简单地将.nuget\NuGet.targets
文件中的一个值从true
更改为false
来设法实现此功能
我改变了:
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
到
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
请注意元素值已更改。 希望这会有所帮助。
答案 3 :(得分:0)
我可能会尝试在.nuget \ NuGet.targets文件中将RestorePackages属性设置为true:
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
答案 4 :(得分:0)
对于任何绊倒这个问题的人,寻找一种在构建服务器上恢复包的方法,NuGet Package Restore给出了当前选项的一个很好的概述。
我选择使用命令行程序包还原方法。它就像发出以下命令行一样简单:
C:><path to nuget.exe> restore <path to solution.sln>
nuget.exe可以从https://docs.nuget.org/consume/installing-nuget获得。我使用的是版本 Command-Line Utility Latest 3.X 。
答案 5 :(得分:0)
运行此命令以修复NuGet启用程序包
Install-NuGetEnablePackageRestoreFix
然后运行启用命令
Install-Package NuGetEnablePackageRestore
答案 6 :(得分:0)
Install-Package NuGetEnablePackageRestore
答案 7 :(得分:-2)
- 转到工具 - &gt;库包管理器 - &gt; “包恢复” - &gt;取消选中“允许NuGet下载丢失的包”和“自动检查...”
重建解决方案
清洁解决方案
现在选中“允许NuGet下载丢失的软件包”和“自动检查...”
重建解决方案