nuget.config игнорирует зависимости зависимостей (под-зависимостей) - PullRequest
0 голосов
/ 04 марта 2019

У меня есть nuget.config для моего проекта, и я указал путь к репозиторию.Я также указал globalPackagesFolder.

<config>
<add key="globalPackagesFolder" value="c:\p" />
<add key="repositoryPath" value="c:\p" />
</config>

Теперь я хочу установить сторонний пакет в свой проект.Этот пакет правильно расположен по указанному мной пути.

Когда я пытаюсь установить другой пакет, который имеет зависимость от System.Net.Http с другими зависимостями, nuget не может установить этот пакет,потому что путь слишком длинный.

Прямые зависимости расположены в указанном мной repositoryPath из nuget.config.Проблема в том, что субзависимости не расположены на этом пути.Поиск файлов в этих репозиториях не дал результатов.

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

Как я могу изменить это поведение?

Если это невозможно, есть ли другое решение моей проблемы?Сотрудник предложил сократить мою учетную запись Windows, но это не решение.Я также не могу сократить наше имя пользователя Teamcity.

Пакет, который я пытаюсь установить, разработан моей компанией.Поэтому, если мне нужно изменить настройки в пакете, это не проблема.

Я пробовал с Visual Studio 2017 Pro и Enterprise с Nuget 4.6.0 и Visual Studio 2019 RC с Nuget 5.0.0.Целевой платформой является .NET Core 2.1

Когда я добавляю пакет System.Net.Http в свой проект вручную и устанавливаю пакет, проблем не возникает, но я бы предпочел этого не делать, если толькодругого решения нет.

Редактировать: Чтобы прояснить ситуацию: Если я устанавливаю пакет A, который зависит от пакета B, а B зависит от пакета C, пакет A находится в моем указанномПуть, но B и C нет.Я даже не знаю, где находятся Пакеты B и C.

1 Ответ

0 голосов
/ 05 марта 2019

nuget.config игнорирует зависимости зависимостей (под-зависимостей)

Это правильное поведение для проекта .NET Core.

В ядре dotnet или проектах, использующих PackageReference, указаны ссылки только на непосредственные зависимости и загружены только непосредственные зависимости в кэш пакета.

По этой причине вы устанавливаетеПакет A, который зависит от пакета B, а B зависит от пакета C, пакет A отображается в файле вашего проекта, например:

<PackageReference Include="PackageA" Version="1.0.0" />

, и кэш в указанном вами пути, но B и Cnot.

Это одно из самых больших преимуществ PackageReference, когда мы не загромождаем файл проекта зависимостями gazillion, о которых потребитель, вероятно, не заботится.Установите пакет nuget в проект, перейдите к project_root/obj/project.assets.json и откройте этот json, вы увидите свой пакет в списке вместе с его зависимостями.Если вы видите здесь предполагаемые зависимости, это подтверждает, что пакет создан правильно.Но NuGet не восстановит зависимости в кэш пакетов, пока вы не установите эти зависимости напрямую.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...