NuGet için x betik Varlığı Önbelleğe Alma kaynağı oluşturma
Dekont
Bu bölüm, vcpkg'nin herhangi bir zamanda değişebilen veya kaldırılabilen deneysel bir özelliğini kapsar.
Bu örnekte, yapıtları geri yüklemek ve göndermek için betik kullanarak bir NuGet akışını varlık önbelleğe alma kaynağı olarak ayarlayacağız.
Önkoşullar
- nuget.exe
- NuGet paketleri akışı
1. Adım: Oluşturma asset-source.nuspec
Aşağıdaki içeriklere sahip bir NuGet paket belirtimi şablonu oluşturun:
<?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. Adım: Varlık sağlayıcısı betiği oluşturma
Şimdi varsa NuGet akışından paketleri indiren ve yoksa eksik paketleri akışınıza yükleyen bir betik oluşturmanız gerekir.
Aşağıda sağlanan içeriklerle oluşturun asset-provider.bat
, NuGet akışı URL'sini ve yolunu asset-source.nuspec
sisteminizdeki doğru değerlerle değiştirdiğinden emin olun.
@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. Adım: Varlık önbelleğe alma kaynaklarını yapılandırma
Varlık sağlayıcısı betiğini oluşturduğunuza göre, vcpkg'ye bunu varlık önbelleğe alma kaynağı olarak kullanma talimatı vermeniz gerekir. Bunu yapmak için aşağıdaki ortam değişkenlerini ayarlayın:
$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"
NOT: Varlık sağlayıcısı betiğinin ve nuget.exe dosyasının yer tutucu yollarını sisteminizdeki doğru yollarla değiştirdiğinden emin olun.
X_VCPKG_ASSET_SOURCES
, vcpkg için varlık önbelleğe alma kaynaklarını ayarlamak için kullanılan ortam değişkenidir. Bu örnekte aşağıdaki değerleri ayarlayacağız:
clear
varsayılan varlık önbelleğe alma konumundan kurtulur.x-script
betiğinizi varlık önbelleğe alma kaynağı olarak ekler, ilk parametre vcpkg komut satırının çağrılması gerektiğini belirtir, bu örnekte betiği çağırırasset-provider.bat
ve gerekli bazı parametreleri iletiriz.x-block-origin
tüm indirmeleri yapılandırılan varlık önbelleğe alma kaynaklarından gelmeye zorlar.
VCPKG_KEEP_ENV_VARS
ortam değişkenlerini vcpkg'nin derleme ortamına iletmek için kullanılır. Derlemeler sırasında vcpkg temiz bir ortam oluşturur ve öğesini VCPKG_KEEP_ENV_VARS
ekleyerek NUGET
NuGet yürütülebilir konumunun derlemeler sırasında iletilmesini sağlarız.
Her şey düzgün bir şekilde ayarlandıktan sonra, vcpkg bir varlığı indirdiği her zaman gelecekteki indirmelerde kullanmak üzere NuGet akışınıza yükler. Önbelleğe alınan varlıkların, dosyasındaki SHA512 ve içinde asset-source.nuspec
belirtilen sürümden sonra adlandırıldığını göreceksiniz. Paketleriniz için daha kötü adlara sahip olmak isterseniz, paket şablonunu ve varlık sağlayıcısı betiğini kendi mantığınızla değiştirebilirsiniz.