Подтвердить что ты не робот

Visual Studio 2013 игнорирует nuget.config

У меня есть проект Visual Studio 2013, который использует Nuget. У меня есть файл package.config в корневом каталоге решения, определяющий пакеты Nuget, которые мы хотим установить. У меня также есть файл nuget.config в корневой директории решения, определяющий packageSources, а также некоторые packageSourceCredentials. Одним из источников пакета является частное репо для нашей компании.

Если я открою командную строку в этом корневом каталоге решения и наберите nuget restore, он отлично работает и сможет ударить наши частные репозитории, чтобы задействовать некоторые из используемых нами пакетов.

Но если я открою решение в Visual Studio 2013 и его создам, он не работает при попытке загрузить наши собственные пакеты, потому что при этом он игнорирует наш файл nuget.config и, следовательно, не знает о нашем частном репозитории nuget.

Я могу войти в "Инструменты" > "Параметры" и добавить наше частное репо, но мы стараемся делать все в рамках самого решения, чтобы оно создавало готовые продукты без необходимости настройки.

Почему nuget.config игнорируется VS 2013?

4b9b3361

Ответ 1

Перезапустите Visual Studio после редактирования NuGet.config!

Я заметил, что VS2012 не получает изменений в NuGet.config до тех пор, пока не перезапустил его.

Ответ 2

Я создал новый проект со следующей структурой каталогов.

-ConsoleApplication1
    -ConsoleApplication1
    -ConsoleApplication1.sln
    -nuget.config

До добавления nuget.config я не мог видеть ни одного из моих личных репозиториев при использовании функции "Управление пакетами для решения". Когда я добавил nuget.config, я смог увидеть мои новые репозитории в диалоговом окне. Я также могу восстановить свои пакеты с помощью восстановления nuget и из сборки в VS 2013.

Мой nuget.config выглядит следующим образом

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
        <add key="MyRepo" value="http://XX.XX.XXX.XX:81/host/repo" />
    </packageSources>
    <activePackageSource>
        <add key="All" value="(Aggregate source)" />
    </activePackageSource>
</configuration>

Основываясь на вашей описанной проблеме, я могу только подумать, что вы, возможно, ранее пытались отключить восстановление пакета Nuget из своего проекта до использования обновленного метода восстановления пакетов. Если вы не восстанавливаете пакет ковровых бомб из каждого проекта одновременно, может быть оставлена ​​некоторая логика, которая может помешать новому методу. Например, если вы удалили папку .nuget из вашего решения, файл nuget.config все еще может быть там, что вызывает конфликты.

Ответ 3

Я обнаружил, что если у вас есть многопроектное решение, а проекты все в папках под папкой решения, то размещение NuGet.config в папке проекта не сработает. Он не получает частный пакет. Он работает, если вы поместите NuGet.config в папку решения.

То есть, это не работает:

  • Решение
    • ProjectA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
      • NuGet.config

пока это работает:

  • Решение
    • ProjectA
      • ProjectA.csproj
    • ProjectB
      • ProjectB.csproj
    • NuGet.config

Я также обнаружил, что параметр disableSourceControlIntegration не работает, если указан в \NuGet.config. Он работает только в .nuget\NuGet.config. Поэтому у меня есть два конфигурационных файла для моего решения: один в корне, который содержит конфигурацию источника пакета, и один в папке .nuget с параметром disableSourceControlIntegration.

Протестировано с обновлением Visual Studio 2012 5 и расширением диспетчера пакетов NuGet 2.8.5.

Ответ 4

Под вашим проектом веб-сайта решения или проекта веб-приложения? Я думаю, что проект веб-сайта игнорирует файл nuget.config.