![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| JohnJ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Здравствуйте! Такая задача. Есть написанное на c# дополнение к autocad, нужно после некоторых изменений компилировать его для целого ряда autocad: 2008, 2012 и 2014.
Для этого проделывается следующий алгоритм: 1. Выбирается соответствующая конфигурация построения (там задаётся путь для создаваемой dll, остальное всё одинаково для разных автокадов) 2. В Reference проекта удаляются все подключенные от прежнего автокада dll, подключаются новые (вместо библиотеки от 2008 подключаем библиотеки от 2012, затем от 2014) 3. В связи с некоторыми изменениями в структуре классов разных версий автокада, часть кода переписывается. Решается это сейчас использованием #define ACAD2008, #define ACAD2012 или #define ACAD2014 соответственно под какой компилируем. 4. Для 2008 используется Framework 3.5, для 2012 и 2014 - Framework 4. Вот эти 4 шага проделываются для каждого дополнения для каждого вида используемого на предприятии автокада. Есть ли возможность автоматизировать это как-нибудь? Может уже готовые наработки имеются? Хорошо было бы иметь возможность задавать соответствующие изменения в виде сценария (скрипта) или даже проще как-то делать... Надеюсь на подсказку опытных людей. Используется Visual Studio 2012 Professional. |
|||
|
||||
| Ilya81 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Например, в файле проекта кроме
можно дописать вручную свой параметр с произвольным названием по тому ж синтаксису. Например
Visual Studio от этого его задавать не научится, но при компиляции из командной строки его можно будет указывать. А остальное аналогично - если значение этого параметра одно - делаем одни define'ы и подключаем одни сборки, если другое - другие (тоже правкой файла проекта вручную). |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
А чтобы из студии можно было использовать надо добавить конфигурацию проекту и ставить значения в зависимости от неё. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Один из вариантов. Другой - написать своё расширение, которое заодно может и добавлять в файл проекта подключение сборок и объявление символов по условию. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
а еще есть вариант унифицировать всё общение в виде интерфейсов, которые реализовать в версия-зависимых сборках и подключать что надо динамически (в основном проекте же ссылаться только на интерфейсную часть). И это будет достатоно правильным, как фаулер завещал..
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| JohnJ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Мне подсказали следующее решение, которым я теперь и пользуюсь: на каждую версию автокада создавать отдельный проект, но сами файлы с кодом программы хранить только в одном из них, а в остальных проектах создавать ссылки на эти файлы. Отличия в коде разрешаются с помощью деректив препроцессора и задания символов компиляции в свойствах проекта
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |