Ссылка nuget.config

Поведение NuGet управляется параметрами в разных NuGet.Config или nuget.config файлах, как описано в общих конфигурациях NuGet.

nuget.config — это XML-файл, содержащий узел <configuration> верхнего уровня, который, в свою очередь, содержит элементы разделов, описываемые в этой статье. Каждый раздел содержит ноль или больше элементов. См. пример файла конфигурации. В именах регистр символов не учитывается, а в качестве значений могут использоваться переменные среды.

Совет

Добавьте файл nuget.config в корневую папку репозитория проекта. Рекомендуется использовать такой подход, так как он способствует повторяемости и гарантирует наличие одинаковой конфигурации NuGet у разных пользователей. Возможно, вам потребуется настроить clear элементы, чтобы гарантировать, что конфигурация пользователя или компьютера не применяется. Дополнительные сведения о применении параметров.

Раздел config

Содержит различные параметры конфигурации, которые можно задавать с помощью команды nuget config.

dependencyVersion и repositoryPath применяется только к проектам, использующим packages.config. globalPackagesFolder Применяется только к проектам с использованием формата PackageReference.

Ключ Значение
dependencyVersion (только packages.config) Значение DependencyVersion по умолчанию для установки, восстановления и обновления пакета, если параметр -DependencyVersion не указан напрямую. Это значение также используется в пользовательском интерфейсе диспетчера пакетов NuGet. Возможные значения: Lowest, HighestPatch, HighestMinor, Highest.
globalPackagesFolder (проекты только с помощью PackageReference) Расположение глобальной папки пакетов по умолчанию. Значение по умолчанию — %userprofile%\.nuget\packages (Windows) или ~/.nuget/packages (Mac и Linux). В файлах nuget.config для конкретных проектов можно использовать относительный путь. Этот параметр переопределяется переменной NUGET_PACKAGES среды, которая имеет приоритет.
repositoryPath (только packages.config) Расположение, в котором следует установить пакеты NuGet вместо папки $(Solutiondir)/packages по умолчанию. В файлах nuget.config для конкретных проектов можно использовать относительный путь.
defaultPushSource Определяет URL-адрес источника пакета или путь к нему, который следует использовать по умолчанию, если другие источники пакета для операции не обнаружены.
http_proxy http_proxy.user http_proxy.password no_proxy Параметры прокси-сервера, которые следует использовать при подключении к источникам пакета; значение http_proxy должно иметь формат http://<username>:<password>@<domain>. Пароли зашифровываются, и их нельзя добавить вручную. Значение параметра no_proxy представляет собой разделенный запятыми список доменов, для которых производится обход прокси-сервера. В качестве этих значений можно также использовать переменные среды http_proxy и no_proxy. Дополнительные сведения см. в записи блога Параметры прокси-сервера в NuGet (skolima.blogspot.com).
maxHttpRequestsPerSource Управляет максимальным числом параллельных запросов, отправленных из NuGet в каждый источник пакета для разрешения зависимостей пакета и загрузки. Значение dotnet.exe по умолчанию является Int32.MaxValue производным от HttpClientHandler.MaxConnectionsPerServer свойства. Этот параметр не влияет на dotnet.exeMac OS то, что ограничение регулирования установлено, чтобы 16 избежать слишком большого количества открытых файлов. Значение по умолчанию для NuGet client tools этого выполняется так.NET Framework, как Visual Studio и nuget.exe включено.1Mono64Windows Значение по умолчанию для Packages.config проектов стилей имеет Environment.ProcessorCountзначение . Настройка maxHttpRequestsPerSource свойства в значение меньше, чем значение по умолчанию, может повлиять на производительность NuGet.
signatureValidationMode Указывает режим проверки, используемый для проверки подписей пакетов для установки пакета и восстановления. Значения: accept, require По умолчанию — accept.

Пример:

<config>
    <add key="dependencyVersion" value="Highest" />
    <add key="globalPackagesFolder" value="c:\packages" />
    <add key="repositoryPath" value="c:\installed_packages" />
    <add key="http_proxy" value="http://company-squid:3128@contoso.com" />
    <add key="signatureValidationMode" value="require" />
    <add key="maxHttpRequestsPerSource" value="16" />
</config>

Раздел bindingRedirects

Определяет то, производится ли в NuGet автоматическая переадресация привязок при установке пакета.

Ключ Значение
skip Логическое значение, указывающее, следует ли пропустить автоматическую переадресацию привязок. Значение по умолчанию — false.

Пример:

<bindingRedirects>
    <add key="skip" value="True" />
</bindingRedirects>

Раздел packageRestore

Управляет восстановлением пакета во время сборки.

Ключ Значение
включена Логическое значение, указывающее, может ли NuGet выполнять автоматическое восстановление. Вы также можете задать переменную среды EnableNuGetPackageRestore со значением True вместо того, чтобы задавать этот параметр в файле конфигурации.
automatic Логическое значение, указывающее, должен ли диспетчер NuGet проверять отсутствие пакетов во время сборки.

Пример:

<packageRestore>
    <add key="enabled" value="true" />
    <add key="automatic" value="true" />
</packageRestore>

Раздел solution

Определяет то, включается ли папка packages решения в систему управления версиями. Этот раздел работает только в файлах nuget.config в папке решения.

Ключ Значение
disableSourceControlIntegration Логическое значение, указывающее, следует ли игнорировать папку пакетов при работе с системой управления версиями. По умолчанию используется значение false.

Пример:

<solution>
    <add key="disableSourceControlIntegration" value="true" />
</solution>

Разделы источников пакета

packageSources,packageSourceCredentials, , apikeystrustedSignersactivePackageSourcedisabledPackageSourcesи packageSourceMapping все работают вместе, чтобы настроить работу NuGet с репозиториями пакетов во время установки, восстановления и обновления операций.

Команда nuget sources обычно используется для управления этими параметрами, за исключением того, для apikeys чего управляется с помощьюnuget setapikeyкоманды, и trustedSigners которая управляется с помощью nuget trusted-signers команды.

Обратите внимание, что URL-адрес источника для nuget.org — https://api.nuget.org/v3/index.json.

packageSources

Выводит список всех известных источников пакетов. Порядок игнорируется во время операций восстановления и с любым проектом с помощью формата PackageReference. NuGet учитывает порядок источников для операций установки и обновления с помощью packages.configпроектов.

Атрибут XML Характер использования
Ключ (имя, назначаемое источнику пакета)
Value Путь к источнику пакета или его URL-адрес.
protocolVersion Используемая версия протокола сервера NuGet. Текущая версия — "3". По умолчанию используется версия 2, если не указывать на URL-адрес .json источника пакета (например, https://api.nuget.org/v3/index.json). Поддерживается в NuGet 3.0+. Дополнительные сведения о протоколе 3 см . в API NuGet Server.
allowInsecure Подключение ions Если значение false или не указано, NuGet выдает предупреждение, если источник использует http, а не https. Если вы уверены, что взаимодействие с этим источником никогда не будет подвержено риску атак перехвата, можно задать значение true для подавления предупреждения. Поддерживается в NuGet 6.8+.

Пример:

<packageSources>
    <clear />    
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Contoso" value="https://contoso.com/packages/" />
    <add key="http-source" value="http://httpsourcetrusted/" allowInsecureConnections="true" />
    <add key="Test Source" value="c:\packages" />
</packageSources>

Примечание.

При использовании интерфейса командной строки можно выразить RestoreSources свойство MSBuild или --source(.NET CLI)(NuGet CLI) | -Source для переопределения определенного <packageSources> в конфигурации NuGet.config.

Совет

Если для заданного узла указан параметр <clear />, NuGet игнорирует ранее определенные значения конфигурации для этого узла. Дополнительные сведения о применении параметров.

packageSourceCredentials

Содержит имена пользователей и пароли источников, которые, как правило, задаются с помощью параметров -username и -password команды nuget sources. По умолчанию пароли зашифровываются, если также не указан параметр -storepasswordincleartext. При необходимости допустимые типы проверки подлинности можно указать с помощью коммутатора -validauthenticationtypes .

Ключ Значение
username Имя пользователя источника в виде обычного текста. Примечание. Переменные среды можно использовать для повышения безопасности.
password Зашифрованный пароль источника. Зашифрованные пароли поддерживаются только в Windows и расшифровываются только при использовании на том же компьютере и через того же пользователя, что и исходное шифрование.
cleartextpassword Незашифрованный пароль источника. Примечание. Переменные среды можно использовать для повышения безопасности.
validauthenticationtypes Разделенный запятыми список допустимых типов проверки подлинности для этого источника. Задайте значение basic, если сервер объявляет NTLM или Negotiate. Ваши учетные данные следует отправлять с помощью базового механизма, например, при использовании PAT с локальным Azure DevOps Server. К другим допустимым значениям относятся negotiate, kerberos, ntlm и digest, но они вряд ли будут полезны.

Предупреждение

Хранение паролей в чистом тексте настоятельно не рекомендуется. Обратите внимание, что зашифрованные пароли поддерживаются только в Windows. Кроме того, их можно расшифровать только при использовании на том же компьютере и тем же пользователем, который первоначально зашифровал их. Дополнительные сведения об управлении учетными данными см. в рекомендациях по обеспечению безопасности для использования пакетов из частных веб-каналов.

Совет

Если пароль, не зашифрованный, передается для password сообщения об ошибке "Неправильный параметр" будет возникать.

Пример:

В файле конфигурации элемент <packageSourceCredentials> содержит дочерние узлы для каждого применимого имени источника (пробелы в имени заменяются на _x0020_). То есть для источников с именами Contoso и Test Source файл конфигурации содержит следующие значения при использовании зашифрованных паролей:

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="Password" value="..." />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="Password" value="..." />
    </Test_x0020_Source>
</packageSourceCredentials>

Кроме того, можно предоставить допустимые методы проверки подлинности.

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="Password" value="..." />
        <add key="ValidAuthenticationTypes" value="basic" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="Password" value="..." />
        <add key="ValidAuthenticationTypes" value="basic, negotiate" />
    </Test_x0020_Source>
</packageSourceCredentials>

При использовании незашифрованных паролей, хранящихся в переменной среды:

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="ClearTextPassword" value="%ContosoPassword%" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="ClearTextPassword" value="%TestSourcePassword%" />
    </Test_x0020_Source>
</packageSourceCredentials>

При использовании незашифрованных паролей:

Предупреждение

Хранение паролей в чистом тексте настоятельно не рекомендуется.

<packageSourceCredentials>
    <Contoso>
        <add key="Username" value="user@contoso.com" />
        <add key="ClearTextPassword" value="33f!!lloppa" />
    </Contoso>
    <Test_x0020_Source>
        <add key="Username" value="user" />
        <add key="ClearTextPassword" value="hal+9ooo_da!sY" />
    </Test_x0020_Source>
</packageSourceCredentials>

apikeys

Содержит ключи для источников, которые используют проверку подлинности на основе ключей API. Эти ключи задаются с помощью команды nuget setapikey.

Ключ Значение
(URL-адрес источника) Зашифрованный ключ API.

Пример:

<apikeys>
    <add key="https://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
</apikeys>

disabledPackageSources

Определяет источники, отключенные в настоящее время. Значение может быть пустым. Если определенные источники не отключены в этом разделе, они включены.

Ключ Значение
(имя источника) Логическое значение, указывающее, отключен ли источник.

Пример:

<disabledPackageSources>
    <add key="Contoso" value="true" />
</disabledPackageSources>

<!-- Empty list -->
<disabledPackageSources />

В приведенном выше примере источник Contoso пакета отключен и не будет использоваться для скачивания или установки пакетов.

activePackageSource

(Только в версиях 2.x; в версиях 3.x и более поздних является нерекомендуемым)

Определяет текущий активный источник или указывает совокупность всех источников.

Ключ Значение
(имя источника) или All Если ключ представляет имя источника, значением является путь к источнику или его URL-адрес. Если используется ключ All, требуется значение (Aggregate source), объединяющее все источники пакетов, которые не отключены.

Пример:

<activePackageSource>
    <!-- Only one active source-->
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

    <!-- All non-disabled sources are active -->
    <add key="All" value="(Aggregate source)" />
</activePackageSource>

Раздел доверенныхsigners

Хранит доверенные подписи, используемые для разрешения пакета при установке или восстановлении. Этот список не может быть пустым, если пользователь задает signatureValidationMode значение require.

Этот раздел можно обновить с помощью nuget trusted-signers команды.

Схема:

Доверенный подписыватель содержит коллекцию certificate элементов, которые заверяют все сертификаты, определяющие заданный подписыватель. Доверенный подписыватель может быть либо элементом AuthorRepository, либо .

Доверенный репозиторий также указывает serviceIndex для репозитория (который должен быть допустимым https URI) и может при необходимости указать список owners разделителей с запятой, чтобы ограничить еще больше доверенных пользователей из этого конкретного репозитория.

Поддерживаемые хэш-алгоритмы, используемые для отпечатка сертификата, SHA384SHA256иSHA512.

Если указанный certificateallowUntrustedRoottrue сертификат может быть связан с ненадежным корнем при создании цепочки сертификатов в рамках проверки подписи.

Пример:

<trustedSigners>
    <author name="microsoft">
        <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
    </author>
    <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
        <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <certificate fingerprint="5A2901D6ADA3D18260B9C6DFE2133C95D74B9EEF6AE0E5DC334C8454D1477DF4" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        <owners>microsoft;aspnet;nuget</owners>
    </repository>
</trustedSigners>

раздел fallbackPackageFolders

(3.5+) Предоставляет способ предварительной подготовки пакетов, чтобы не выполнялось никаких действий, если пакет найден в резервных папках. Резервные папки пакетов имеют ту же папку и структуру файлов, что и глобальная папка пакета: nupkg присутствует, и все файлы извлекаются.

Логика поиска для этой конфигурации:

  • Просмотрите глобальную папку пакета, чтобы узнать, скачан ли пакет или версия.

  • Просмотрите резервные папки для сопоставления пакетов и версий.

Если любой из подстановок выполнен успешно, скачивание не требуется.

Если совпадение не найдено, то NuGet проверка источников файлов, а затем http-источники, а затем скачивает пакеты.

Ключ Значение
(имя резервной папки) Путь к резервной папке.

Пример:

<fallbackPackageFolders>
   <add key="XYZ Offline Packages" value="C:\somePath\someFolder\"/>
</fallbackPackageFolders>

Раздел сопоставления исходного кода пакета

В packageSourceMapping разделе содержатся сведения, которые помогают операциям пакета NuGet определить, откуда следует скачать идентификатор пакета.

Этот раздел можно управлять только вручную.

Раздел packageSourceMapping может содержать packageSource только разделы.

packageSource

Подсеть раздела packageSourceMapping раздела. Содержит сопоставление, помогающее NuGet определить, следует ли использовать источник для скачивания интересующего пакета.

Ключ
Имя источника пакета, объявленного в packageSources разделе. Ключ должен точно соответствовать ключу источника пакета.

Разделы packageSource , в которых packageSourceMapping находятся, однозначно определяются элементом key.

package

packageSource Часть package раздела.

Расписание
Шаблон, определенный синтаксисом сопоставления источника пакетов.

Пример:

<packageSourceMapping>
  <packageSource key="contoso.com">
    <package pattern="Contoso.*" />
  </packageSource>
</packageSourceMapping>

Раздел packageManagement

Задает формат управления пакетами по умолчанию, package.config или PackageReference. Проекты в стиле SDK всегда используют PackageReference.

Ключ Значение
format Логическое значение, указывающее формат управления пакетами по умолчанию. Если 1формат — PackageReference. Если 0формат — packages.config.
disabled (выключено) Логическое значение, указывающее, следует ли отображать запрос на выбор формата пакета по умолчанию при первой установке пакета. False скрывает запрос.

Пример:

<packageManagement>
   <add key="format" value="1" />
   <add key="disabled" value="False" />
</packageManagement>

Совет

Если для заданного узла указан параметр <clear />, NuGet игнорирует ранее определенные значения конфигурации для этого узла. Дополнительные сведения о применении параметров.

Использование переменных среды

В значениях nuget.config можно использовать переменные среды (в NuGet 3.4 и более поздних версиях) для применения параметров во время выполнения.

Например, если переменная среды HOME в Windows имеет значение c:\users\username, значение параметра %HOME%\NuGetRepository в файле конфигурации разрешается в c:\users\username\NuGetRepository.

Обратите внимание, что необходимо использовать переменные среды в стиле Windows (начинается и заканчивается %) даже на Mac/Linux. Наличие $HOME/NuGetRepository в файле конфигурации не будет разрешаться. В Mac/Linux значение %HOME%/NuGetRepository будет разрешено /home/myStuff/NuGetRepository.

Если переменная среды не найдена, NuGet использует буквальное значение из файла конфигурации. Например %MY_UNDEFINED_VAR%/NuGetRepository , будет разрешено как path/to/current_working_dir/$MY_UNDEFINED_VAR/NuGetRepository

В таблице ниже показана поддержка синтаксиса переменных и разделителя путей для файлов NuGet.Config.

NuGet.Config Поддержка переменной среды

Синтаксис Разделитель Dir Windows nuget.exe Windows dotnet.exe Mac nuget.exe (в Mono) Mac dotnet.exe
%MY_VAR% / Да Да Да Да
%MY_VAR% \ Да Да No No
$MY_VAR / No No No No
$MY_VAR \ No No No No

Пример файла конфигурации

Ниже приведен пример nuget.config файла, иллюстрирующий ряд параметров, включая необязательные:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <!--
            Used to specify the default location to expand packages.
            See: nuget.exe help install
            See: nuget.exe help update

            In this example, %PACKAGEHOME% is an environment variable.
            This syntax works on Windows/Mac/Linux
        -->
        <add key="repositoryPath" value="%PACKAGEHOME%/External" />

        <!--
            Used to specify default source for the push command.
            See: nuget.exe help push
        -->

        <add key="defaultPushSource" value="https://MyRepo/ES/api/v2/package" />

        <!-- Proxy settings -->
        <add key="http_proxy" value="host" />
        <add key="http_proxy.user" value="username" />
        <add key="http_proxy.password" value="encrypted_password" />
    </config>

    <packageRestore>
        <!-- Allow NuGet to download missing packages -->
        <add key="enabled" value="True" />

        <!-- Automatically check for missing packages during build in Visual Studio -->
        <add key="automatic" value="True" />
    </packageRestore>

    <!--
        Used to specify the default Sources for list, install and update.
        See: nuget.exe help list
        See: nuget.exe help install
        See: nuget.exe help update
    -->
    <packageSources>
        <clear />
        <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
        <add key="MyRepo - ES" value="https://MyRepo/ES/nuget" />
    </packageSources>

    <!-- Used to store credentials -->
    <packageSourceCredentials />

    <!-- Used to disable package sources  -->
    <disabledPackageSources />

    <!--
        Used to specify default API key associated with sources.
        See: nuget.exe help setApiKey
        See: nuget.exe help push
        See: nuget.exe help mirror
    -->
    <apikeys>
        <add key="https://MyRepo/ES/api/v2/package" value="encrypted_api_key" />
    </apikeys>

    <!--
        Used to specify trusted signers to allow during signature verification.
        See: nuget.exe help trusted-signers
    -->
    <trustedSigners>
        <author name="microsoft">
            <certificate fingerprint="3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
        </author>
        <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
            <certificate fingerprint="0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <certificate fingerprint="5A2901D6ADA3D18260B9C6DFE2133C95D74B9EEF6AE0E5DC334C8454D1477DF4" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
            <owners>microsoft;aspnet;nuget</owners>
        </repository>
    </trustedSigners>
</configuration>