NuGet 用の x スクリプトアセット キャッシュ ソースの作成

Note

このセクションでは、いつでも変更または削除できる vcpkg の試験的な機能について説明します。

この例では、成果物を復元およびプッシュするスクリプトを使用して、NuGet フィードを資産キャッシュ ソースとして設定します。

前提条件

  • nuget.exe
  • NuGet パッケージ フィード

手順 1: 作成 asset-source.nuspec

次の内容を含む NuGet パッケージ スペック テンプレートを作成します。

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$sha$</id>
        <version>1.0.0</version>
        <description>vcpkg download asset</description>
        <authors>vcpkg</authors>
    </metadata>
    <files>
        <file src="$file$" />
    </files>
</package>

手順 2: 資産プロバイダー スクリプトを作成する

次に、利用可能な場合は NuGet フィードからパッケージをダウンロードし、存在しない場合は不足しているパッケージをフィードにアップロードするスクリプトを作成する必要があります。

以下に示す内容で作成 asset-provider.bat し、NuGet フィードの URL とパスを asset-source.nuspec システム上の正しい値に置き換えてください。

@echo off
set url=%1
set sha512=%2
set dst=%3
set "_dst=%dst:/=\%"
set "_sha512=%sha512:~0,90%"

cd /d %~dp3
%NUGET% install %sha512:~0,90% -Source https://your-nuget-feed-url
echo.
if exist %_sha512%.1.0.0 (
    echo "Pull from the NuGet feed"
    cd %_sha512%.1.0.0

    REM Assume both are files not directories
    echo "F" | xcopy /f *.part %_dst%
) else (
    echo "Fetch from the url"
    curl.exe -L %url% --create-dirs --output %dst%
    REM Replace with the correct path
    %NUGET% pack C:\path\to\asset-source.nuspec -BasePath %~dp3 -Properties "sha=%_sha512%;file=%dst%" -OutputDirectory %TEMP%
    %NUGET% push -ApiKey az -SkipDuplicate %TEMP%\%_sha512%.1.0.0.nupkg -Source https://your-nuget-feed-url
)

手順 3: 資産キャッシュ ソースを構成する

資産プロバイダー スクリプトを作成したら、それを資産キャッシュ ソースとして使用するように vcpkg に指示する必要があります。 これを行うには、次の環境変数を設定します。

$env:X_VCPKG_ASSET_SOURCES="clear;x-script,C:/path/to/asset-provider.bat {url} {sha512} {dst};x-block-origin"
$env:NUGET="C:/path/to/nuget.exe"
$env:VCPKG_KEEP_ENV_VARS="NUGET"

注: アセット プロバイダー スクリプトと nuget.exe へのプレースホルダー パスは、システム内の正しいパスに置き換えてください。

X_VCPKG_ASSET_SOURCES は、vcpkg で使用するアセット キャッシュ ソースを設定するために使用される環境変数です。 この例では、次の値を設定します。

  • clear は、既定の資産キャッシュ場所を削除します。
  • x-script は、スクリプトを資産キャッシュ ソースとして追加します。最初のパラメーターは、vcpkg が呼び出す必要があるコマンド ラインを示します。この例では、スクリプトを asset-provider.bat 呼び出し、必要なパラメーターをいくつか転送します。
  • x-block-origin は、構成済みの資産キャッシュ ソースからすべてのダウンロードを強制的に取得します。

VCPKG_KEEP_ENV_VARS は、環境変数を vcpkg のビルド環境に転送するために使用されます。 ビルド中に vcpkg は、ビルド中に NuGet 実行可能ファイルの場所が確実にVCPKG_KEEP_ENV_VARS転送されるように、NUGETクリーン環境を作成します。

すべてが適切に設定されると、vcpkg がアセットをダウンロードするたびに、将来のダウンロードで使用するために NuGet フィードにアップロードされます。 キャッシュされた資産の名前は、SHA512 ファイルとで指定されたバージョンに基づいて指定されている asset-source.nuspecことがわかります。 パッケージに対してより意味のある名前を付けたい場合は、独自のロジックを使用してパッケージ テンプレートと資産プロバイダー スクリプトを変更できます。