Ссылка 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 | Расположение глобальной папки пакетов по умолчанию. Значение по умолчанию — %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.exe Mac OS то, что ограничение регулирования установлено, чтобы 16 избежать слишком большого количества открытых файлов. Значение по умолчанию для NuGet client tools этого выполняется так.NET Framework , как Visual Studio и nuget.exe включено.1 Mono 64 Windows Значение по умолчанию для 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:[email protected]" />
<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
, , apikeys
trustedSigners
activePackageSource
disabledPackageSources
и 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. |
allowInsecureConnections | Если значение false или не указано, NuGet выдает предупреждение, если источник использует http, а не https. Если вы уверены, что взаимодействие с этим источником никогда не будет подвержено риску атак перехвата, можно задать значение true для подавления предупреждения. Поддерживается в NuGet 6.8+. |
disableTLSCertificateValidation | Это свойство конфигурации позволяет отключить проверку СЕРТИФИКАТА SSL/TLS для HTTPS-сервера. Если задано значение true, сервер будет игнорировать все ошибки, связанные с SSL/TLS-сертификатами, такими как истекший срок действия или самозаверяющий сертификат, и установить подключение без проверки. Поддерживается в NuGet 6.11+. |
Пример:
<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="Invalid-certificate-https-source" value="https://httpsSourceTrusted/" disableTLSCertificateValidation="true" />
<add key="Test Source" value="c:\packages" />
</packageSources>
Примечание.
Используйте источники пакетов, которыми вы доверяете.
Примечание.
При использовании интерфейса командной строки можно выразить RestoreSources
свойство MSBuild или --source
(.NET CLI)(NuGet CLI) | -Source
для переопределения определенного <packageSources>
в конфигурации NuGet.config.
Совет
Если для заданного узла указан параметр <clear />
, NuGet игнорирует ранее определенные значения конфигурации для этого узла. Дополнительные сведения о применении параметров.
auditSources
Перечисляет все известные источники аудита, которые будут использоваться во время восстановления в NuGet Audit.
Если источники аудита отсутствуют, восстановление будет использовать источники пакетов и подавлять NU1905.
auditSources
добавлен в NuGet 6.12.
Источники аудита поддерживают те же атрибуты, что packageSources
и (protocolVersion
, allowInsecureConnections
) и источники, для которых требуется проверка подлинности, настроены таким packageSourceCredentials
же образом, как packageSources
.
Пример:
<auditSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</auditSources>
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="[email protected]" />
<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="[email protected]" />
<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="[email protected]" />
<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="[email protected]" />
<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
элементов, которые заверяют все сертификаты, определяющие заданный подписыватель. Доверенный подписыватель может быть либо элементом Author
Repository
, либо .
Доверенный репозиторий также указывает serviceIndex
для репозитория (который должен быть допустимым https
URI) и может при необходимости указать список owners
разделителей с запятой, чтобы ограничить еще больше доверенных пользователей из этого конкретного репозитория.
Поддерживаемые хэш-алгоритмы, используемые для отпечатка сертификата, SHA384
— SHA256
иSHA512
.
Если указанный certificate
allowUntrustedRoot
true
сертификат может быть связан с ненадежным корнем при создании цепочки сертификатов в рамках проверки подписи.
Пример:
<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" />
<certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" 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" />
<certificate fingerprint="1F4B311D9ACC115C8DC8018B5A49E00FCE6DA8E2855F9F014CA6F34570BC482D" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
<owners>microsoft;aspnet;nuget</owners>
</repository>
</trustedSigners>
</configuration>