. Net Базовая проблема с Nuget. - PullRequest
0 голосов
/ 28 января 2020

У меня есть несколько. net основных проектов. Моя структура проекта состоит из нескольких независимых библиотечных проектов, каждый из которых имеет разные ссылки на пакеты nuget, а основной веб-проект имеет ссылку на эти библиотечные проекты.

Моя проблема заключается в том, что в моем основном веб-проекте мне снова нужно дать те же ссылки на nuget. если я не дал ссылки на nuget, я получаю сообщение об ошибке. Можно ли как-то ссылаться на библиотеку, а не на ссылку на пакет nuget в веб-проекте? В любом случае, просто добавление библиотек должно автоматически импортировать ссылки на nuget? Как я могу избежать добавления одинаковых ссылок Nuget в основной проект?

============================== =============================== Я думаю, что мой вопрос не был ясен, позвольте мне привести это с примером

  • Solution1

    LibProject1 -> Nuget1Reference -> Nuget2Reference
    LibProject2 -> Nuget3Refernce

  • Solution2

    -> Lib1ProjectReference
    -> Lib2ProjectReference

В этой структуре проект Solution2 получает ошибку времени выполнения, поскольку в нем отсутствуют библиотеки nuget. Я должен явно дать ту же ссылку Nuget в Solution2, которую я уже дал в своем библиотечном решении. Как я могу избежать повторной ссылки в моем решении2. Он должен автоматически получить все библиотеки, на которые есть ссылки, как из lib1, так и из lib2, в мое решение2.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Можно ли как-то ссылаться на библиотеку, а не на ссылку на пакет nuget в веб-проекте? В любом случае, просто добавление библиотек должно автоматически импортировать ссылки на nuget? Как я могу избежать добавления одних и тех же ссылок на nuget в основной проект?

Мне кажется, что на самом деле проблема в том, что msbuild не копирует эти ссылки на nuget в проект MVC, когда это необходимо сделать.

Когда проект MVC добавляет project reference к проекту библиотеки, а проект библиотеки ссылается на некоторые пакеты nuget, ожидаемое поведение заключается в том, что указанные сборки nuget должны существовать в выходной папке MVC во время сборки. В вашей ситуации их там нет, что вызывает ошибку времени выполнения ...

Пожалуйста, попробуйте пересобрать проект MVC, если это не сработает, то добавьте этот скрипт в файл вашего проекта (xx. csproj) и пересоберите MVC проект снова:

  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

Дайте мне знать, если это поможет или нет:)

0 голосов
/ 30 января 2020

Похоже, вы создаете свои собственные пакеты NuGet, а затем ссылаетесь на эти пакеты NuGet из основного проекта. Это правильный способ сделать это.

Хотя упаковщик может сделать это для вас, лучший способ контролировать создание ваших пакетов NuGet - создать файл .NuSpe c для каждого пакета NuGet, который вы создаем. Вы указываете файлы, которые должны быть в пакете, а также зависимости.

Указывая зависимости в файле .NuSpe c, вы можете конкретно указать, какие пакеты NuGet ему нужны, и с какими версиями будет работать Это. Когда вы ссылаетесь на него из основного проекта, он узнает, какие пакеты NuGet ему необходимы для выполнения работы.

Вы можете прочитать все о файле NuSpe c в Microsoft: https://docs.microsoft.com/en-us/nuget/reference/nuspec

...