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

ama*_*eur 21 nuget nuget-package

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

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

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

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

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

Xav*_*ter 15

试试这个包:

Install-Package NuGetEnablePackageRestore 
Run Code Online (Sandbox Code Playgroud)


Dee*_*101 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>
Run Code Online (Sandbox Code Playgroud)

变化2:

<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
Run Code Online (Sandbox Code Playgroud)

我的评论:尴尬的逻辑,但想到" 要求同意不等于假必须是真的 "(原始)因为" 要求同意等于真必须是真的 "(翻译)并且将最后一部分改为" " 是有意义的(编辑)

更改3:我还添加/取消注释<PackageSource ... >标记以删除任何依赖项

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <PackageSource Include="https://nuget.org/api/v2/" />        
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢Sid为此 - 这个解决方案对我有用,而Xavier的解决方案却没有. (2认同)

yyo*_*oon 5

当我尝试使用Jenkins构建我的一个项目时,我遇到了这个问题,并设法通过简单地将.nuget\NuGet.targets文件中的一个值更改为true来实现它false.

我变了:

<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
Run Code Online (Sandbox Code Playgroud)

<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
Run Code Online (Sandbox Code Playgroud)

请注意元素值已更改.希望这可以帮助.


asa*_*asa 0

我可能可以尝试在 .nuget\NuGet.targets 文件中将 RestorePackages 属性设置为 true:

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>
Run Code Online (Sandbox Code Playgroud)