ソリューションにNuGetPackage Restoreをセットアップしましたが、ローカルマシンで正常に機能します。私はここに提供された指示に従いました:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
私が抱えている問題は、ビルドサーバーで次のエラーが発生することです。
パッケージの復元はデフォルトで無効になっています。同意するには、[Visual Studioオプション]ダイアログを開き、[パッケージマネージャー]ノードをクリックして、[ビルド中に不足しているパッケージのダウンロードをNuGetに許可する]をオンにします。環境変数「EnableNuGetPackageRestore」を「true」に設定して同意することもできます。
残念ながら、ビルドサーバーはオフサイトで制御されているため、環境変数を更新できないため、ビルドサーバーにアクセスできません。これを回避する他の方法はありますか?パッケージの復元を可能にするソリューションファイルなどに追加できるものはありますか?
このパッケージをお試しください:
Install-Package NuGetEnablePackageRestore
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>
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>
要素の値が変更されていることに注意してください。お役に立てれば。
%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>
インストールパッケージNuGetEnablePackageRestore
ビルドサーバーでパッケージを復元する方法を探しているこの質問に出くわした人のために、 NuGet Package Restore は、現在のオプションの概要を示しています。
コマンドラインパッケージ復元アプローチを使用することを選択しました。次のコマンドラインを発行するのと同じくらい簡単です。
C:><path to nuget.exe> restore <path to solution.sln>
nuget.exeは https://docs.nuget.org/consume/installing-nuget から取得できます。バージョンコマンドラインユーティリティ最新3.Xを使用しました。
おそらく、.nuget\NuGet.targetsファイルでRestorePackagesプロパティをtrueに設定しようとする可能性があります。
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
このコマンドを実行して、NuGet有効化パッケージを修正します
Install-NuGetEnablePackageRestoreFix
その後、Enableコマンドを実行します
Install-Package NuGetEnablePackageRestore