|
Модераторы: Partizan, gambit |
|
DigitalDummy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.4.2006 Где: В подвале шоколад ной фабрики. Репутация: 1 Всего: 2 |
Здоровья вам, и разуменья, грандиозные умы форума Винград!
Есть ли возможность, каким-то образом задавать для проекта список References, если часто нужно туда подключать\отключать какой-то один элемент (из своего набора) чтобы просто «сбилдить» несколько разных версий одной программы? Например, я вижу крайне удобным решением (если такое возможно) создать несколько конфигураций проекта. Это там, где изначально обычно только «Debug» и «Release», я бы добавил себе «Release (with Lib_A)», «Release (with Lib_B)» и так далее. (В С++ проектах у меня уже было такое решение и там различался набор «дефайнов» препроцессора или набор *.lib подключений.) Все это надо провернуть в рамках среды Visual Studio. Если задал вопрос не в тот раздел форума, то прошу прощения у модераторов. Дополнение темы: Основной проект постоянно меняется (дополняется новыми модулями, файлами ресурсов и т.д.). Создавать несколько разных его копий, отличающихся только списком подключенных References гораздо сложнее в обновлении, чем в ручную их менять у одной копии проекта. Так что, вариант с разными копиями основного проекта не подходит. Спасибо, Partizan за первое предложенное решение и развитие темы. На данный момент у меня следующие возможные идеи:
Может быть эти идеи вам помогут, чтобы помочь мне. Большое спасибо за любую помощь и советы. Это сообщение отредактировал(а) DigitalDummy - 14.7.2008, 18:02 |
|||
|
||||
Partizan |
|
|||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DigitalDummy, не знаю как в рамках среды....а вот созданием нескольких вариаций одного и того же *.csproj файла я думаю эту задачу решить можно...
-------------------- СУВ, Partizan. |
|||
|
||||
DigitalDummy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.4.2006 Где: В подвале шоколад ной фабрики. Репутация: 1 Всего: 2 |
Спасибо за ответ, Partizan,
Это решение не подходит. Основной проект постоянно меняется (дополняется новыми модулями, файлами ресурсов и т.д.). Создавать несколько разных его копий, отличающихся только списком подключенных References гораздо сложнее в обновлении, чем в ручную их менять у одной копии проекта. (Обновил описание темы в соответствие с этим условием.) Это сообщение отредактировал(а) DigitalDummy - 14.7.2008, 18:03 |
|||
|
||||
Partizan |
|
|||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
DigitalDummy, ну когда я говорил про несколько копий *csproj - это решение тоже подразумевалось как возможное
Добавлено через 7 минут и 36 секунд DigitalDummy, как ещё один вариант(в продолжение варианта с правкой файла проекта с помощью утилиты): 1. пусть улитита правит файл проекта в зависимости допустим от аргументов командной строки 2. пусть затем запускает msbuild.exe и собирает проект в нужной конфигурации 3. пусть утилита затем восстанавливает файл проекта в исходное состояние 4. это всё можно затем прописать в качестве prebuild/postbuild events разных конфигураций... чуть по-извращенски, но всё же =) -------------------- СУВ, Partizan. |
|||
|
||||
jonie |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
грузите сборки динамически 8)
а так стандартными методами vs низя вроде как -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
DigitalDummy |
|
||||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.4.2006 Где: В подвале шоколад ной фабрики. Репутация: 1 Всего: 2 |
Спасибо, jonie, за попытку. Динамически грузить мне тоже не подходит. Мне нужен готовый продукт в нескольких вариациях. Без всякого лишнего.
Спасибо, Partizan, за извращенческий вариант. Я же больше люблю самые красивые и сочные решения. Так что, дорогие мои господа, сейчас я вам расскажу, как решается моя задача. В оболочке Visual Studio есть знакомые всем определения: Solution и Project. Solution, говоря в общих чертах, просто объединяет в себе группу из одного и более Проектов (Project). Проект, в свою очередь, уже несет в себе ссылки на исходные файлы, файлы ресурсов, настройки компиляции, сборки и прочее. То есть, всю лабудень, которая нужна для великого процесса создания исполняемого файла (библиотеки или прочей чертовщины — ну, вы меня поняли). Проект сам по себе является текстовым XML файлом с набором свойств и параметров проекта. Здесь и ссылки на исходные файлы, и просто настройки проекта. Ну, а одна из главных прелестей оболочки Visual Studio в том, что она все-таки предоставляет возможность разработчику иметь для каждого Проекта (и для «Солюшена» тоже), набор конфигураций. Ну, там, «Debug», «Release». Понимаем? Ага. Так вот, различные функции оболочки Visual Studio, к сожалению, скрыты от среднестатистического ленивого разработчика, нежелающего читать дебри справочной системы. К этой же функции относится и возможность внести в файл своего Проекта специальные условные параметры, которые будут различаться для каждой «конфигурации проекта». Ход событий: 1) Как добавить новую «конфигурацию», я рассказывать здесь не буду. Это все и так уже должны знать, потому что это все делается через интерфейс Visual Studio. Скажу только, что я добавил в свой основной проект конфигурацию с идентификатором «Release.Ref.1». 2) Теперь, я вручную добавил нужный мне «Reference» к своему основному проекту. Как если бы я собирался «сбилдить» один из нужных вариантов моей программы. 3) Но, «билдить» я больше не хочу как обычно, вручную меняя «Reference» список. Надоело! Сохраняю все изменения и закрываю студию. 4) Нахожу свой файл Проекта и открываю в обычном текстовом редакторе. 5) Ищу следующий набор параметров:
Именно этот набор параметров отвечает за подключение к моему проекту другого моего проекта как «Reference». Для примера, подключаемый проекта тут называется «MyProject_Ref_1». 6) И тут, я, начитавшись перед этим документации, самым магическим образом редактирую данный набор параметров в следующую конструкцию:
С помощью этой конструкции параметров я получаю настраиваемый «билд» проекта только при активной конфигурации проекта с идентификатором «Release.Ref.1». Практически любые параметры проекта (не только список «референсов») можно задавать таким образом. Проект будет отлично открываться в студии как обычный (если, конечно, не ошибиться в синтаксисе). Это дает богатые возможности для автоматизации труда разработчика. Примите мой совет, кто ещё не знает. Вуаля, господа! Всем спасибо. P.S. Можно было бы ещё рассказать как я написал «*.bat» файл для «билда» всех вариантов каждой нужной конфигурации моего «Солюшена». Но, это уже гораздо проще и в рамки данной темы не входит. P.P.S.S. Читаем справку, господа, проявляем внимание и выдержку, и жизнь станет успешнее. Дополнительную информацую искать тут: Для расширенных параметров проекта: MSDN, Раздел «MSBuild Conditional Constructs» Для «билда» с помощью «батника»: MSDN, Раздел «Devenv Command Line Switches» Это сообщение отредактировал(а) DigitalDummy - 14.7.2008, 23:33 |
||||
|
|||||
Idsa |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
DigitalDummy, не нравится мне Ваш тон :(
А решение отличное. Это плюс. |
|||
|
||||
DigitalDummy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.4.2006 Где: В подвале шоколад ной фабрики. Репутация: 1 Всего: 2 |
Idsa, прошу простить коль что-то вам не понравилось в тоне.
Пишу ровно так, как приятно и весело было бы услышать это всё мне самому. Вот был бы я клоном самого себя, ровно так бы и зачитался с восторгом. Простите! |
|||
|
||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |