Одна сборка из нескольких проектов - PullRequest
5 голосов
/ 21 мая 2009

В приложении .net, включающем несколько проектов в одном решении, у меня есть проект с пространством имен, установленным в Company.Product.UI, а другой - с Company.Product.UI.WebPages. Моя проблема заключается в том, что две библиотеки являются результатом создания двух проектов. Как я могу иметь одну DLL и все еще сохранить текущую структуру решения. Я использую Visual Studio 2008 и C #.

Ответы [ 3 ]

11 голосов
/ 21 мая 2009

Вам придется либо объединить два проекта в один проект, либо использовать инструмент, подобный ILMerge , чтобы объединить получившиеся сборки в одну сборку.

ILMerge - это утилита, которую можно использовать объединить несколько сборок .NET в единая сборка. Это свободно доступны для использования из инструментов и Страница утилит в Microsoft .NET Framework Developer Center.

Если вы хотите автоматизировать ILMerge как задачу MSBuild, я бы посоветовал вам взглянуть на ilmerge-tasks :

Заинтересован в использовании ILMerge во время автоматизированная сборка? ILMerge Tasks содержит два сборочных проекта, которые позволит вам получить доступ к ILMerge как задача от MSBuild и NAnt. Это даже включает событие после сборки, которое сливает ILMerge и задачу dll так что вы можете использовать задачу без Присутствует ILMerge.exe.

1 голос
/ 21 мая 2009

Полагаю, вы могли бы создать новый файл проекта, содержащий все файлы из двух проектов. Таким образом, вы можете сохранить текущую структуру для разработки и использовать объединенный файл проекта для создания выходных данных, которые будут выпущены из проекта. Файлы проекта представляют собой довольно простые XML-файлы, поэтому если вы откроете один из них в текстовом редакторе, вы, вероятно, выясните, как они работают довольно быстро.

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

0 голосов
/ 10 июня 2013

Есть простой способ сделать это, но это может быть не лучшим способом. Создайте новое решение с именем dll, которое вы хотите. Создайте структуру папок в этом проекте, которая совпадает с именами двух проектов. Затем в определенной папке выполните «Добавить существующий элемент». Добавьте файлы cs в проект с таким именем. Когда вы добавляете файлы, выберите «Добавить как ссылку» на кнопку «Добавить» (рядом с кнопкой «Добавить» есть раскрывающийся список). Продолжайте делать это и строить. У вас будет длл.

например. Если у вас есть один проект с именем A и один с именем B, и вы хотите объединить их в all с именем C. Создайте новый проект с именем C. Добавьте в этот проект папку с именем A и другую папку с именем B. Теперь, скажем, проект A имеет CS файл X.cs и B имеет файл с именем Y.cs. В папке с именем A щелкните правой кнопкой мыши и выберите Добавить существующий элемент. Перейдите к проекту A и выберите X.cs. Рядом с кнопкой Добавить вы увидите стрелку вниз. Нажмите на это и выберите Добавить как ссылку. Сделайте то же самое для B. Постройте этот проект, и вы получите dll в папке bin.

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