Как ссылаться на пакеты NuGet? - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в мире. NET, и в этот момент я запутался в пакетах, ссылках и в том, как ссылаться на них в моем проекте c#.

У меня есть 3 проект в моем решении:

  • DataAccess - который содержит логи c для доступа к данным, отображение между DTO и сущностями и т. д. c.,
  • DataAccessTest - содержит модульные тесты для проекта DataAccess,
  • Service - включает проект DataAccess в сервис Windows.

Теперь, DataAccess ссылки на проект AutoMapper (среди прочего), чтобы помочь с преобразованием данных. Он включен в элемент <PackageReference /> в файле csproj. Кажется, что работает нормально, когда я делаю dotnet restore, однако dotnet build не удается при попытке разрешить пространства имен! То же самое касается JetBrains Rider - он не находит пространства имен, пока я не буду явно ссылаться на них в <Reference>!

Не уверен, что связан, но то же самое относится и к зависимым проектам. Например, DataAccessTest ссылается на проект DataAccess - так что тест будет запущен. Тем не менее, он все еще требует добавления транзитивных зависимостей (например, AutoMapper), поверх ссылки на проект.

Это предполагаемое поведение? Вам нужно оставить и <PackageReference>, и <Reference>, чтобы проект правильно компилировался?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

В C# Вы должны позаботиться о ссылках на другие проекты. если один проект был связан с другим проектом, другой проект не может использовать или ссылаться на первый проект. если вы это сделали, это даст вам ошибку компиляции.

0 голосов
/ 03 февраля 2020

Вам необходимо установить пакеты Nuget для каждого проекта, который ссылается на методы в этом пакете. Таким образом, если только для вашего проекта DataAccess требуется AutoMapper, достаточно добавить пакет Nuget в этот проект. Решение - не более, чем обертка вокруг множества проектов. Вы должны быть в состоянии опубликовать sh проект отдельно. Проект позаботится о своих собственных зависимостях. Трудно понять, что происходит. Это может быть полезно, если вы создаете небольшой тестовый проект, например, создаете пустой консольный проект и библиотеку DataAccess. Затем вы добавляете пакет Nuget в свою библиотеку DataAccess и копируете все содержимое. Таким образом, вы можете попытаться выяснить, что не так. Обязательно установите пакеты Nuget для правильного проекта (я несколько раз ошибался, прежде чем обнаружил, как это действительно работает).

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