Какова лучшая практика для сегментирования проектов c # .net на основе одного базового проекта? - PullRequest
1 голос
/ 13 мая 2010

Честно говоря, я не могу сформулировать свой вопрос лучше, не описав его.

  • У меня есть базовый проект (со всей его славой, DLL, ресурсами и т. Д.), Который представляет собой CMS.
  • Мне нужно использовать этот проект в качестве основы для других проектов выпекания.
  • Этот базовый проект должен поддерживаться и обновляться среди всех пользовательских проектов выпечки.
  • Я использую Subversion (Collabnet и Tortise SVN)

У меня есть два вопроса:

1 - Можно ли использовать Subversion для совместного использования базового проекта среди других проектов

То, что я имею в виду, это то, что я могу «оформить» базовый проект в другой проект «извлечен» и получить как обновление, так и фиксацию отдельно. Итак, чтобы нарисовать картинку, скажем, я работаю над нестандартным проектом и каким-то образом модифицирую основной / базовый проект (который, я знаю, подойдет другим) Могу ли я затем зафиксировать эти изменения и при если я обновлю базовый проект в других ресурсах «Извлечено», то потянет ли он изменения? Короче говоря, я не хотел бы вручную развертывать обновленные файлы ядра всякий раз, когда я вносил изменения в каждый отдельный проект.

2 - Если я создаю пользовательский файл (скажем, страницу webcontrol или aspx и т. Д.), Могу ли я его скомпилировать отдельно из базового проекта

Еще один хитрый для объяснения. Когда я публикую свое веб-приложение, оно создает библиотеки DLL на основе пространств имен прикрепленных к нему проектов. Таким образом, у меня может быть несколько библиотек DLL, включая DLL пространства имен «Веб-сайт», которая может быть просто веб-сайтом. Я хочу иметь возможность создавать отдельный, настраиваемый элемент управления, который не компилируется в эти библиотеки DLL, поскольку пользовательские файлы не должны полагаться на эти библиотеки DLL для запуска. Разве так просто установить отдельное пространство имен для таких файлов, как, например, CustomFiles.ProjectName?

Думайте о всей идее как о добавлении модулей в проект .NET, я не хочу, чтобы код модуля был в какой-либо из основных DLL, но мне нужно, чтобы модуль имел доступ к основным библиотекам.

(Для основного проекта не требуется доступ к коду модуля, поскольку это должно быть только в теории, только в одном случае, хотя я считаю, что в любом случае это было бы невозможно без использования JSON / SOAP или чего-то подобного, возможно, Я не прав.)

Я хочу создать подключаемую среду, очень похожую на среду Joomla / Wordpress, так как PHP обычно не нужно сначала компилировать. Я вижу, что по этой причине все это возможно / просто. Идея состоит в том, чтобы использовать подключаемые темы, модули и т. Д.

(Я не пробовал просто добавлять темы .NET после компиляции / публикации, но я предполагаю, что это все равно возможно? ИЛИ компилятору нужно ссылаться на элементы в файлах?)


ОБНОВЛЕНИЕ (16/05/2010):

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

Ответы [ 2 ]

1 голос
/ 13 мая 2010

По первому вопросу:

Если базовый проект является библиотекой, ничто не мешает вам создать следующую структуру каталогов в вашем SVN:

  • Базовый проект
  • Классный проект № 1
  • Классный проект № 2

Все проекты, построенные на Базовом проекте , будут содержать относительную ссылку, и тогда каждый сможет проверить его Классный проект X и Базовый проект и работать над ними , Внесение изменений в Базовый проект позволит всем остальным увидеть их, обновив изображение Базовый проект . Преимущество : требуется только один ствол SVN.

На ваш второй вопрос:

Я старался изо всех сил, но я не могу понять, что вы спрашиваете:).

1 голос
/ 13 мая 2010

В качестве первого вопроса вы хотите использовать svn externals. Более подробную информацию можно найти здесь: http://svnbook.red -bean.com / ru / 1.0 / ch07s03.html

Для вашего второго вопроса вам нужно создать отдельную сборку, и самый простой способ - создать новый проект в вашем решении. У вас не может быть одного проекта, испускающего 2 dll's (о которых я знаю)

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