Де знаходиться файл NuGet.Config у проекті Visual Studio?


79

Мені цікаво, де знаходиться файл NuGet.Config у проекті Visual Studio 2017 ? Я спробував створити власний файл NuGet.Config у корені проекту, але я не знайшов жодного нового сховища (джерела NuGet). Хтось має якусь ідею?

Ось файл, який я намагаюся досягти для свого проекту .Net Core :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
    <add key="AspNetCoreTools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
    <add key="NuGet" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

Відповіді:


110

Visual Studio читає файли NuGet.Config з кореня рішення. Спробуйте перемістити його туди, замість того, щоб помістити в ту ж папку, що і проект.

Ви також можете розмістити файл, %appdata%\NuGet\NuGet.Configі він буде використовуватися скрізь.

https://docs.microsoft.com/en-us/nuget/schema/nuget-config-file


4
Ви пробували це за допомогою VS 2017? Я вже пробував це без успіху. Як я можу насправді помітити зміни? Можливо, вони є там, але я їх не помічаю (але я не думаю).
Мохаммед Нурелдін,

4
За проектом файли NuGet.Config працюють із відновлення командного рядка, але не у Visual Studio.
Джастін Емгартен,

7
@Justin Emgarten, чи існує якась документація для висловлення ідеї "Файли NuGet.Config за проектом працюють із відновлення командного рядка, але не у Visual Studio", і чому параметри repositoryPath у NuGet.config не працюють для кожного проекту лише для кожного рішення ? Дякую.
Лео Лю-MSFT

4
Це не працює з VS2017. VS не бачить NuGet.config у кореневій папці рішення.
Piotr Perak

8
За замовчуванням VS2017 використовує глобальний Nuget.config, розташований за шляхом C: \ Users \ yourusername \ AppData \ Roaming \ NuGet \ Nuget.config
пасажир

30

Існує декілька nuget-пакетів, прочитаних у такому порядку:

  1. Спочатку NuGetDefaults.Config file. Ви знайдете це в %ProgramFiles(x86)%\NuGet\Config.
  2. Файл на рівні комп'ютера.
  3. Файл на рівні користувача. Ви знайдете це в %APPDATA%\NuGet\nuget.config.
  4. Будь-який файл з іменем, nuget.configпочинаючи з кореня вашого диска до каталогу, де викликається nuget.exe.
  5. Конфігураційний файл, який ви вказуєте в опції -configfile під час виклику nuget.exe

Ви можете знайти більше інформації тут .


3
Оскільки спочатку це мене бентежило, я хотів би пояснити: Перерахований тут порядок - це порядок, в якому nuget завантажує свої налаштування. Пізніші дії потенційно можуть замінити попередні налаштування. Отже, коли ви вказуєте --configfileist, все ще читає файл за замовчуванням, файл машинного рівня тощо. Але тоді NuGet розглядає ці опції знизу вгору, тобто --configfileперемоги проти файлу рівня користувача тощо
Manuzor,

3

На додаток до прийнятої відповіді, я хотів би додати одну інформацію, що пакети NuGet у Visual Studio 2017 знаходяться у самому файлі проекту. Тобто, клацніть правою кнопкою миші на проекті -> редагувати, щоб знайти всі записи посилання на пакет.


3
Думаю, ви неправильно зрозуміли питання. Питання полягає в тому, де ви розміщуєте файл nuget.config (у якому перераховані всі сервери, які містять доступні nugets для завантаження). Він не запитує, у якому файлі перелічені встановлені наґети для вашого проекту.
Pure.Krome

5
@ Pure.Krome погоджуюсь, але цікаво, що чоловік опублікував цю відповідь, яку, на вашу думку, він неправильно зрозумів, це питання, насправді чоловік задав питання! ; D
С.Серпоошан

4
/ я ховається, збентежений.
Pure.Krome

2

Якщо ви використовуєте проксі-сервер, вам доведеться відредагувати файл Nuget.config.

У Windows 7 та 10 цей файл знаходиться у шляху:
C: \ Users \ YouUser \ AppData \ Roaming \ NuGet.

Включіть налаштування:

<config>
  <add key = "http_proxy" value = "http://Youproxy:8080" />
  <add key = "http_proxy.user" value = "YouProxyUser" />
</config>

0

Я створив відповідь на цю публікацію, яка може допомогти: https://stackoverflow.com/a/63816822/2399164

Короткий зміст:

Я трохи запізнився з грою, але я вважаю, що знайшов просте рішення цієї проблеми ...

  1. Створіть файл "NuGet.Config" у тому ж каталозі, що і ваш .sln
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="{{CUSTOM NAME}}" value="{{CUSTOM SOURCE}}" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageManagement>
    <add key="format" value="0" />
    <add key="disabled" value="False" />
  </packageManagement>
</configuration>
  1. Це все! Створіть тут і свій "Dockerfile"

  2. Запустіть docker build за допомогою вашого Dockerfile, і все вирішиться

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.