21

ソリューションに NuGet Package Restore をセットアップしましたが、ローカル マシンでうまく動作します。ここで提供される指示に従いました:

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

私が抱えている問題は、次のエラーが発生するビルド サーバーにあります。

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

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

4

9 に答える 9

15

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

Install-Package NuGetEnablePackageRestore 
于 2012-10-08T22:07:07.347 に答える
14

NuGet は、サーバーがどのように構成されているか 100% 確信が持てない場合、予測できない動作にローカル設定を使用できます。

NuGet の設定<sln root>/.nuget/NuGet.targetsは、バージョン管理されたファイル内に 1 か所に配置することを好みます。への 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>

私のコメント: ぎこちない論理ですが、「false に等しくない同意が true でなければならない (オリジナル)と考えてください編集)

変更 3<PackageSource ... > : また、タグへの依存関係を削除するために、タグを追加/コメント解除しました

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <PackageSource Include="https://nuget.org/api/v2/" />        
</ItemGroup>
于 2013-10-30T20:02:46.030 に答える
5

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>

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

于 2013-10-23T05:34:13.723 に答える
1

%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>
于 2016-08-16T00:57:43.400 に答える
0

おそらく、.nuget\NuGet.targets ファイルで RestorePackages プロパティを true に設定することができます。

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>
于 2012-10-08T20:00:47.003 に答える
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を使用しました。

于 2016-06-23T13:16:40.787 に答える