Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Настройка подключенных «References» к проекту С# |
Автор: DigitalDummy 14.7.2008, 15:35 |
Здоровья вам, и разуменья, грандиозные умы форума Винград! Есть ли возможность, каким-то образом задавать для проекта список References, если часто нужно туда подключать\отключать какой-то один элемент (из своего набора) чтобы просто «сбилдить» несколько разных версий одной программы? Например, я вижу крайне удобным решением (если такое возможно) создать несколько конфигураций проекта. Это там, где изначально обычно только «Debug» и «Release», я бы добавил себе «Release (with Lib_A)», «Release (with Lib_B)» и так далее. (В С++ проектах у меня уже было такое решение и там различался набор «дефайнов» препроцессора или набор *.lib подключений.) Все это надо провернуть в рамках среды Visual Studio. Если задал вопрос не в тот раздел форума, то прошу прощения у модераторов. Дополнение темы: Основной проект постоянно меняется (дополняется новыми модулями, файлами ресурсов и т.д.). Создавать несколько разных его копий, отличающихся только списком подключенных References гораздо сложнее в обновлении, чем в ручную их менять у одной копии проекта. Так что, вариант с разными копиями основного проекта не подходит. Спасибо, http://vingrad.ru/@Partizan за первое предложенное решение и развитие темы. На данный момент у меня следующие возможные идеи:
Может быть эти идеи вам помогут, чтобы помочь мне. Большое спасибо за любую помощь и советы. |
Автор: Partizan 14.7.2008, 17:27 |
DigitalDummy, не знаю как в рамках среды....а вот созданием нескольких вариаций одного и того же *.csproj файла я думаю эту задачу решить можно... |
Автор: DigitalDummy 14.7.2008, 17:37 |
Спасибо за ответ, Partizan, Это решение не подходит. Основной проект постоянно меняется (дополняется новыми модулями, файлами ресурсов и т.д.). Создавать несколько разных его копий, отличающихся только списком подключенных References гораздо сложнее в обновлении, чем в ручную их менять у одной копии проекта. (Обновил описание темы в соответствие с этим условием.) |
Автор: Partizan 14.7.2008, 18:06 | ||
DigitalDummy, ну когда я говорил про несколько копий *csproj - это решение тоже подразумевалось как возможное ![]()
Добавлено через 7 минут и 36 секунд DigitalDummy, как ещё один вариант(в продолжение варианта с правкой файла проекта с помощью утилиты): 1. пусть улитита правит файл проекта в зависимости допустим от аргументов командной строки 2. пусть затем запускает msbuild.exe и собирает проект в нужной конфигурации 3. пусть утилита затем восстанавливает файл проекта в исходное состояние 4. это всё можно затем прописать в качестве prebuild/postbuild events разных конфигураций... чуть по-извращенски, но всё же =) |
Автор: jonie 14.7.2008, 19:41 |
грузите сборки динамически 8) а так стандартными методами vs низя вроде как |
Автор: DigitalDummy 14.7.2008, 23:25 | ||||
Спасибо, 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» |
Автор: Idsa 15.7.2008, 00:20 |
DigitalDummy, не нравится мне Ваш тон :( А решение отличное. Это плюс. |
Автор: DigitalDummy 15.7.2008, 00:42 |
Idsa, прошу простить коль что-то вам не понравилось в тоне. Пишу ровно так, как приятно и весело было бы услышать это всё мне самому. Вот был бы я клоном самого себя, ровно так бы и зачитался с восторгом. Простите! |