Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сборка проекта под разные системы, под разные автокады 
V
    Опции темы
JohnJ
Дата 21.7.2014, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.
PM MAIL   Вверх
Ilya81
Дата 21.7.2014, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.4.2014
Где: ЛО, Всеволожский р-н

Репутация: 1
Всего: 4



Например, в файле проекта кроме 
Код

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

можно дописать вручную свой параметр с произвольным названием по тому ж синтаксису. Например
Код

    <ACAD Condition=" '$(ACAD)' == '' ">ACAD2008</ACAD>

Visual Studio от этого его задавать не научится, но при компиляции из командной строки его можно будет указывать.

А остальное аналогично - если значение этого параметра одно - делаем одни define'ы и подключаем одни сборки, если другое - другие (тоже правкой файла проекта вручную).
PM MAIL ICQ Skype   Вверх
jonie
Дата 22.7.2014, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата(Ilya81 @  21.7.2014,  13:24 Найти цитируемый пост)

Visual Studio от этого его задавать не научится, но при компиляции из командной строки его можно будет указывать.

А чтобы из студии можно было использовать надо добавить конфигурацию проекту и ставить значения в зависимости от неё.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Ilya81
Дата 22.7.2014, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.4.2014
Где: ЛО, Всеволожский р-н

Репутация: 1
Всего: 4



Цитата(jonie @  22.7.2014,  09:23 Найти цитируемый пост)
А чтобы из студии можно было использовать надо добавить конфигурацию проекту и ставить значения в зависимости от неё. 

Один из вариантов. Другой - написать своё расширение, которое заодно может и добавлять в файл проекта подключение сборок и объявление символов по условию.
PM MAIL ICQ Skype   Вверх
jonie
Дата 22.7.2014, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



а еще есть вариант унифицировать всё общение в виде интерфейсов, которые реализовать в версия-зависимых сборках и подключать что надо динамически (в основном проекте же ссылаться только на интерфейсную часть). И это будет достатоно правильным, как фаулер завещал..


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
JohnJ
Дата 18.9.2014, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.7.2008

Репутация: нет
Всего: нет



Мне подсказали следующее решение, которым я теперь и пользуюсь: на каждую версию автокада создавать отдельный проект, но сами файлы с кодом программы хранить только в одном из них, а в остальных проектах создавать ссылки на эти файлы. Отличия в коде разрешаются с помощью деректив препроцессора и задания символов компиляции в свойствах проекта
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.