web-dev-qa-db-ja.com

NuGetパッケージの復元がビルドサーバーで機能しない

ソリューションにNuGetPackage Restoreをセットアップしましたが、ローカルマシンで正常に機能します。私はここに提供された指示に従いました:

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

私が抱えている問題は、ビルドサーバーで次のエラーが発生することです。

パッケージの復元はデフォルトで無効になっています。同意するには、[Visual Studioオプション]ダイアログを開き、[パッケージマネージャー]ノードをクリックして、[ビルド中に不足しているパッケージのダウンロードをNuGetに許可する]をオンにします。環境変数「EnableNuGetPackageRestore」を「true」に設定して同意することもできます。

残念ながら、ビルドサーバーはオフサイトで制御されているため、環境変数を更新できないため、ビルドサーバーにアクセスできません。これを回避する他の方法はありますか?パッケージの復元を可能にするソリューションファイルなどに追加できるものはありますか?

21
amateur

このパッケージをお試しください:

Install-Package NuGetEnablePackageRestore 
15
Xavier Decoster

NuGetは、サーバーの構成方法が100%わからない場合、予測できない動作のローカル設定を使用できます。

NuGet設定をバージョン管理された<sln root>/.nuget/NuGet.targetsファイル内の単一の場所に配置することをお勧めします。 <sln root>/.nuget/NuGet.targetsを3回簡単に編集してこれを機能させました。編集すると、次のようになります。

変更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>

私のコメント:厄介な論理ですが、「はfalseに等しくない同意が必要ですtrue」(元の)を「trueに等しい同意が必要ですtrue "(翻訳済み)であり、最後の部分を"falseに変更することは理にかなっています-) "(編集)

変更<PackageSource ... >タグも追加/コメント解除して、への依存関係を削除しました

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <PackageSource Include="https://nuget.org/api/v2/" />        
</ItemGroup>
14
DeepSpace101

Jenkinsでプロジェクトの1つをビルドしようとしたときにこの問題に遭遇し、.nuget\NuGet.targetsファイルの1つの値を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>

要素の値が変更されていることに注意してください。お役に立てれば。

5
yyoon

%appdata%\ NuGet\NuGet.Configで、次のセクションを内部に追加します

    <packageRestore>
    <!-- Package Restore and MSBuild-Integrated Package Restore -->
    <add key="enabled" value="True" />

    <!-- Automatic Package Restore in Visual Studio -->
    <add key="automatic" value="True" />
  </packageRestore>

完全な例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <activePackageSource>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </activePackageSource>
  <packageRestore>
    <!-- Package Restore and MSBuild-Integrated Package Restore -->
    <add key="enabled" value="True" />

    <!-- Automatic Package Restore in Visual Studio -->
    <add key="automatic" value="True" />
  </packageRestore>
</configuration>
1
Aussie Ash

インストールパッケージNuGetEnablePackageRestore

0
Anup Shetty

ビルドサーバーでパッケージを復元する方法を探しているこの質問に出くわした人のために、 NuGet Package Restore は、現在のオプションの概要を示しています。

コマンドラインパッケージ復元アプローチを使用することを選択しました。次のコマンドラインを発行するのと同じくらい簡単です。

C:><path to nuget.exe> restore <path to solution.sln>

nuget.exeは https://docs.nuget.org/consume/installing-nuget から取得できます。バージョンコマンドラインユーティリティ最新3.Xを使用しました。

0
R. Schreurs

おそらく、.nuget\NuGet.targetsファイルでRestorePackagesプロパティをtrueに設定しようとする可能性があります。

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>
0
asa

このコマンドを実行して、NuGet有効化パッケージを修正します

Install-NuGetEnablePackageRestoreFix

その後、Enableコマンドを実行します

Install-Package NuGetEnablePackageRestore

0