it-roy-ru.com

Ссылка на проект VS NuGet

Как мне ссылаться на другой project A из project B в том же решении?
Что я получу и что я потеряю, если я:

  • Добавьте ссылку на project A в качестве ссылки на проект.
  • Установите пакет NuGet из project A в project B.

Вещи, которые меня беспокоят, это зависимости сборки, управление версиями ..?
Или это полностью разрушает цель решения?

4
grmbl

При первом подходе вы получаете простоту, поскольку вам не нужно генерировать новую версию пакета nuget ProjectA, все изменения, которые вы вносите в него (т.е. ProjectA.nupkg).

Однако со вторым подходом вы получаете мобильность, так как вы можете легко поделиться тем же пакетом nuget с другими проектами/решениями.

Лично я создаю пакеты nuget только для проектов, цель которых - поделиться с другими решениями. (Например, библиотеки и рамки).

Надеюсь, это поможет вам решить!

5
Maicon Heck

Ссылка на проект VS NuGet

Ссылка на проект или NuGet - очень распространенная проблема в нашем процессе разработки, нам нужно выбрать, какую из них использовать, исходя из нашей реальной ситуации. 

Например, если ссылочный проект A часто изменяется в процессе разработки, мы рекомендуем использовать ссылку Project. Потому что, если вы используете nuget, вам нужно пересобрать упомянутый проект, воссоздать пакет nuget, переустановить этот пакет nuget в проект B, даже если вам придется опубликовать его на сервере. Это принесет много ненужной работы, и мы часто забываем обновить наш пакет nuget после того, как изменим ссылочный проект A. Если вы используете ссылку на проект, у вас не будет этих проблем. Измененный ссылочный проект A будет автоматически обновлен до того, как мы построим проект B.

С другой стороны, когда мы делимся ссылочным проектом А из решения или передаем этот проект другим, лучшим выбором будет Nuget. У него больше мобильности.

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

Кроме того, существует расширение Visual Studio NuGet Reference Switcher , которое автоматически переключает ссылки сборки NuGet на ссылки на проекты и наоборот.

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

8
Leo Liu-MSFT

В настоящее время с новым форматом csproj вы можете использовать оба одновременно (если у вас есть оба проекта в одном решении).

В вашем примере вы можете ссылаться на project A из project B в качестве ссылки на проект. Затем, если вы хотите выпустить project A как пакет NuGet, вам просто нужно добавить следующий тег в его csproj внутри PropertyGroup:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Поворот сюжета : Если вы хотите выпустить project B как пакет NuGet, просто добавьте цель GeneratePackageOnBuild - MSBuild установит projectA.nupkg как зависимость в projectB.nupkg.

Таким образом, вы можете внутренне работать со своими проектами, в то же время выпуская их как пакеты третьим лицам или другим командам.

0
iosi G