Разница между зависимостью проекта и DLL в .NET в окончательной скомпилированной сборке

StackOverflow https://stackoverflow.com/questions/3714686

Вопрос

Допустим, у меня есть два проекта A и B. A зависит от B. Я могу указать это двумя способами:

  • Включите A и B в одно и то же решение и укажите B как зависимость проекта для A. Это отображается в проекте A Msbuild As как узел «Projectreference».
  • Включите ссылку на скомпилированный DLL B как зависимость A. Это отображается в проекте A MsBuild как «справочный» узел

Мой вопрос: как только я строю сборку для A, есть ли разница в конечном результате между этими двумя методами.

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

Это было полезно?

Решение

Если источники проекта B не изменились между двумя сборками проекта A, не будет разницы в поведении проекта A. Однако, если источники проекта B изменились, ссылаясь на его проект из проекта A, приведет к восстановлению проекта B. Эта разница в том, что определяет ваш выбор, как справиться с проектом B из проекта A:

  • Если у вас есть источник как проекта, так и проекта A, и они тесно связаны, или если они оба находятся в активной разработке, и проект B часто прерывает изменения его публичного интерфейса, вы хотите ссылаться на проект B в качестве проекта. Это гарантирует, что проект всегда использует в своей сборке наиболее современный выход проекта B.

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

Другие советы

Добавление в качестве ссылки на проект просто имеет преимущество в том, что сборка «B» автоматически создается, если это необходимо.

После того, как сборка «А» построена, нет разницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top