2015-06-26 2 views
5

У меня есть маленькое решение, около 20 проектов. Решение также содержало около шести исходных проектов, написанных сторонним поставщиком услуг ACME. Теперь, наконец, эта другая сторона предоставляет нам только с несколькими DLL. Я просто включил их источник, один проект в DLL, в решение, и поэтому я ищу аккуратный способ включения всех этих сборок в решение, поэтому на них можно ссылаться из многих проектов, которые в них нуждаются.Как поделиться несколькими бинарными файлами между исходными проектами в одном решении?

Мои сразу бросаются варианты:

  1. Создать AcmeAssembly проект, добавить все библиотеки DLL в качестве элементов проекта, установленных для копирования продукции.
  2. Создайте папку решений AcmeAssembly. Быстрее и проще, чем исходный проект с двоичным кодом, но папки с решениями имеют очень и очень большой недостаток в отсутствии возможности группировки файлов без файла решения, то есть вне VS.
  3. Создайте пакет NuGet, который включает все необходимые бинарные файлы. Тогда, по крайней мере, у нас также есть частично «физическая» группировка в папках packages. Моя проблема здесь в том, что я никогда не писал пакет NuGet, но я не спрашиваю, как здесь. Я спрашиваю о трех возможных решениях, и больше будет приветствоваться, и если NuGet победит, я научусь писать пакет.

Я не могу просто использовать выходные данные проекта bin\debug и bin\release папки. Для меня это строго выходные папки, и там также должны выводиться ничего, кроме других сборочных сборок. Удаление папки bin должно иметь абсолютно нулевой эффект для сборки, так что, конечно, нет места для хранения двоичных файлов.

+2

Я голосую за NuGet. Это предпочтительный способ распределения сборок. – Kiliman

+0

Nuget наверняка. Держится очень аккуратно. –

+0

Непонятно. Вы спрашиваете, как использовать свою третью сторону или распространять? Я работаю над большими системами с сотнями сторонних DLL и сотен проектов. У нас есть папка 'bin', где мы' 1-'Имеем все dll, наши и третьи лица. '2-' мы ссылаемся на все из этого бункера. '3-' мы строим все проекты в этом бункере. '4-самостоятельные проекты встроены в подкаталоги под bin. - у нас никогда не было проблем с компиляцией, упаковкой или распространением. Хотя наш процесс сборки имеет отличия от процесса сборки программистов –

ответ

0

Преимущества NuGet над другими решениями являются:

  1. Поддержка версионности
  2. поддержка встроена в Visual Studio и MSBuild
  3. Нет «волшебные папки», что все разработчики должны иметь на их машины
0

Создайте свою папку библиотеки Acme (что-то вроде: C: \ Source \ Library \ AcmeLibrary). Поместите все ваши DLL-файлы Acme в эту папку. Затем создайте папку решений в VS и добавьте к ней существующие элементы (не добавляйте папку, но элементы в папке C: \ Source \ Library \ AcmeLibrary в папку решений, используя меню «Добавить существующий элемент ...» выбор).

Смежные вопросы