NuGet包还原不适用于构建服务器

时间:2012-10-08 19:52:10

标签: nuget nuget-package

我已在我的解决方案上设置了NuGet Package Restore,它在我的本地计算机上运行良好。我按照这里提供的说明进行操作:

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

我遇到的问题是在我的构建服务器上发生以下错误:

默认情况下禁用包还原。要获得同意,请打开Visual Studio选项对话框,单击“程序包管理器”节点,然后选中“允许NuGet在构建期间下载缺少的程序包”。您也可以通过设置环境变量' EnableNuGetPackageRestore'来同意。到了' true'

不幸的是,我无法访问构建服务器,因为它是在站点外控制的,因此无法更新环境变量。还有其他方法吗?我可以添加到解决方案文件或类似的任何东西,以允许包恢复?

8 个答案:

答案 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下载丢失的软件包”和“自动检查...”

  • 重建解决方案