Öğretici: NuGet akışı kullanarak vcpkg ikili önbelleği ayarlama

Not

Bu öğreticide Azure Artifacts'te barındırılan bir NuGet akışı kullanılır, ancak bazı değişikliklerle birlikte diğer NuGet akışı sağlayıcıları için de aynı yönergeler kullanılabilir. Örneğin: GitHub Packages.

vcpkg, ikili paketleri uygun bir şekilde karşıya yüklemek ve geri yüklemek için NuGet paket akışlarının kullanılmasını destekler.

NuGet paket akışları, kuruluşunuz veya çalışma grubunuz genelindeki kaynaklara erişimi sınırlamak için ideal olan erişim denetimi özelliklerine sahiptir. NuGet akışları, Azure Artifacts ve GitHub paket kayıt defteri gibi çeşitli bulut depolama sağlayıcıları tarafından desteklenir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

Önkoşullar

  • Terminal
  • vcpkg
  • NuGet paket akışı veya izlemediğiniz bir Azure DevOps hesabı
  • Terminal
  • vcpkg
  • NuGet paket akışı veya izlemediğiniz bir Azure DevOps hesabı
  • mono Sisteminizde yüklü olan paket

1 - NuGet akışı ayarlama

Zaten mevcut bir NuGet paketleri akışınız varsa bu adımı atlayın.

Azure Artifacts NuGet akışı ayarlamak için yönergeleri izleyin.

Ayrıca, istediğiniz diğer Tüm NuGet paketleri akış sağlayıcılarını da kullanabilirsiniz.

2 - NuGet kaynağı ekleme

Not

Linux'ta komutunu yürütmeniz nuget.exegerekirmono. Dağıtımınızın sistem paketi yöneticisini kullanarak yükleyebilirsiniz mono .

vcpkg, ikili önbelleğe alma işlemleri sırasında kullandığı yürütülebilir dosyanın kendi kopyasını nuget.exe alır. Bu öğreticide vcpkg tarafından alınan nuget.exekullanılır. vcpkg fetch nuget komutu, vcpkg-acquired nuget.exedosyasının konumunun çıkışını alır ve gerekirse yürütülebilir dosyayı indirir.

NuGet akışınızı kaynak olarak eklemek için aşağıdaki komutu çalıştırın, değerini seçtiğiniz herhangi bir adla ve <feed url> NuGet akışınızın URL'si ile değiştirin<feed name>.

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

NuGet yürütülebilir dosyasının yolunu getirmek için aşağıdaki komutu yürütebilirsiniz:

vcpkg fetch nuget

Bu, gibi C:\path\to\nuget.exegörünen bir çıkış sağlar. Bu yolu not edin. Önceki adımda elde edilen yolu kullanarak aşağıdaki komutu çalıştırın:

C:\path\to\nuget.exe sources add -Name <feed name> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources add -Name <feed name> -Source <feed url>

API anahtarı sağlama

Bazı sağlayıcılar, Bir API anahtarı kullanarak NuGet paketlerinizi akışa göndermenizi gerektirir. Örneğin, GitHub Packages api anahtarı olarak bir GitHub PAT (Kişisel Erişim Belirteci) gerektirir; Azure Artifacts kullanıyorsanız bunun yerine API anahtarı kullanılır AzureDevOps .

NuGet akışınıza gönderilen tüm paketler için API anahtarını ayarlamak için aşağıdaki komutu kullanın, değerini akışınızın API anahtarıyla değiştirin <apiKey> .

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

NuGet yürütülebilir dosyasının yolunu getirmek için aşağıdaki komutu yürütebilirsiniz:

vcpkg fetch nuget

Bu, gibi C:\path\to\nuget.exegörünen bir çıkış sağlar. Bu yolu not edin. Önceki adımda elde edilen yolu kullanarak aşağıdaki komutu çalıştırın:

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>

Kimlik doğrulaması kimlik bilgilerini sağlama

NuGet akışınız, paketleri indirmenize ve karşıya yüklemenize izin vermek için kimlik doğrulaması gerektirebilir. Böyle bir durumda, kimlik bilgilerini komuta parametre nuget sources add olarak ekleyerek sağlayabilirsiniz.

Örneğin:

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

Azure Artifacts gibi bazı sağlayıcılar farklı kimlik doğrulama yöntemleri gerektirebilir. Daha fazla bilgi edinmek için Özel NuGet akışlarında kimlik doğrulama makalesini okuyun.

nuget.config Dosya kullanma

Alternatif olarak, nuget kaynaklarınızı yapılandırmak için aşağıdaki şablonu izleyerek bir nuget.config dosya kullanabilirsiniz:

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="<feed url>" />
  </config>
  <apiKeys>
    <add key="<feed url>" value="<apikey>" />
  </apiKeys>
  <packageSources>
    <clear />
    <add  key="<feed name>" value="<feed url>" />
  </packageSources>
  <packageSourcesCredentials>
    <<feed name>>
      <add key="Username" value="<username>" />
      <add key="Password" value="<password>" />
    </<feed name>>
  </packageSourcesCredentials>
</configuration>

Örnek nuget.config dosyası:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="https://contoso.org/packages/" />
  </config>
  <apikeys>
    <add key="https://contoso.org/packages/" value="encrypted_api_key" />
  </apikeys>
  <packageSources>
    <clear />
    <add key="Contoso" value="https://contoso.org/packages/" />
  </packageSources>
  <packageSourcesCredentials>
    <Contoso>
      <add key="Username" value="user" />
      <add key="Password" value="..." />
    </Contoso>
  </packageSourcesCredentials>
</configuration>

vcpkg, dosyanızda nuget.config bir defaultPushSource ayarlamanızı, ikili paketleri göndermek için nuGet akışınızın URL'sini varsayılan kaynak olarak kullanmanızı gerektirir.

Paketlerinizi bir Azure Artifacts NuGet akışına yüklüyorsanız komutunu çalıştırarak nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>kaynağınızın API Anahtarı olarak kullanınAzureDevOps. Aksi takdirde, varsa değerini akışınızın uygun API Anahtarıyla değiştirin.

<clear /> Önceden yapılandırılmış diğer değerleri yoksaymak için kaynağı ekleyin. İsterseniz, bu dosyada birden çok kaynak tanımlayabilir, her kaynak için bir <add key="<feed name>" value="<feed url>" /> giriş kullanabilirsiniz.

Dosya kullanarak nuget.config NuGet kaynağı eklemek için aşağıdaki komutu çalıştırın, öğesini dosyanızın nuget.config yoluyla değiştirin<path to nuget.config>:

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

NuGet yürütülebilir dosyasının yolunu getirmek için aşağıdaki komutu yürütebilirsiniz:

vcpkg fetch nuget

Bu, gibi C:\path\to\nuget.exegörünen bir çıkış sağlar. Bu yolu not edin. Önceki adımda elde edilen yolu kullanarak aşağıdaki komutu çalıştırın:

C:\path\to\nuget.exe sources add -ConfigFile <path to nuget.config>
mono `vcpkg fetch nuget | tail -n 1` sources add -ConfigFile <path to nuget.config>

3 - NuGet akışınızı kullanmak için vcpkg yapılandırma

Ortam değişkenini VCPKG_BINARY_SOURCES aşağıdaki gibi ayarlayın:

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Dosya kullanıyorsanız nuget.config , bunun yerine şunları yapın:

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"

Dosya kullanıyorsanız nuget.config , bunun yerine şunları yapın:

set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"

Not

VCPKG_BINARY_SOURCES komutunun export kullanılması yalnızca geçerli kabuk oturumunu etkiler. Bu değişikliği oturumlar arasında kalıcı hale getirmek için komutunu kabuğunuzun profil betiğine (ör. ~/.bashrc veya ~/.zshrc) eklemeniz export gerekir.

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Dosya kullanıyorsanız nuget.config , bunun yerine şunları yapın:

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

Hepsi bu! vcpkg artık NuGet akışınızdan paketleri karşıya yükler veya geri yükler.

Sonraki adımlar

Deneyebileceğiniz diğer görevler şunlardır: