Мы используем Visual Studio 2010, но это было впервые задумано с VS2003.
Я передам лучшие предложения своей команде.Нынешняя настройка почти вызывает рвоту.Это решение C # с большинством проектов, содержащих файлы .sql.Потому что мы поддерживаем Microsoft, Oracle и Sybase, и поэтому самопроизвольно производим препроцессор, очень похожий на препроцессор C, за исключением того, что замены выполняются самодельной программой C # без использования yacc
и подобных инструментов.#ifdefs
используются для условных макроопределений, и да - именно так и делают макросы.Макрос может расширяться до другого макроса или двух, но это должно в конечном итоге завершиться.Только макросы имеют #ifdef
в них - остальная часть кода, подобного SQL, просто использует эти макросы.
Теперь, различные конфигурации: Debug, MNDebug, MNRelease, Release, SQL_APPLY_ALL, SQL_APPLY_MSFT, SQL_APPLY_ORACLE, SQL_APPLY_SYBASE, SQL_BUILD_OUTPUT_ALL, SQL_COMPILE
, а также еще 2.
Также: Any CPU, Mixed Platforms, Win32
.
Что сводит меня с ума, так это необходимость правильно его настроитьа также выбор правильной конфигурации из 12 x 3 = 36
, а также необходимость замены имени базы данных в зависимости от типа базы данных: config, main или gateway.Я думаю, что конфигурация должна быть уменьшена до Debug, Release и SQL_APPLY.Кроме того, использование 0, 1 и 2 кажется 80-м ... Наконец, я думаю, что мое намерение создавать или не создавать 3 типа баз данных для 3 типов поставщиков должно быть сконфигурировано только с такой платой, как:
XOX
OOX
XXX
В этом случае это будет означать сборку MSFT + CONFIG, все SYBASE и все GATEWAY.
Тем не менее, кажется, что в целом используется текстовый файл, препроцессор и множество конфигураций.невероятно неуклюжийСейчас 2010 год, и кто-то обязательно найдет очень чистый и / или креативный инструмент / решение.Единственным плюсом было бы то, что существующая коллекция макросов была хорошо протестирована.
Вам когда-нибудь приходилось писать SQL, который работал бы для нескольких поставщиков?Как вы это сделали?
SqlVars.txt (Каждый из 30 пользователей делает копию шаблона и модифицирует его в соответствии со своими потребностями):
// This is the default parameters file and should not be changed.
// You can overwrite any of these parameters by copying the appropriate
// section to override into SqlVars.txt and providing your own information.
//Build types are 0-Config, 1-Main, 2-Gateway
BUILD_TYPE=1
REMOVE_COMMENTS=1
// Login information used when applying to a Microsoft SQL server database
SQL_APPLY_MSFT_version=SQL2005
SQL_APPLY_MSFT_database=msftdb
SQL_APPLY_MSFT_server=ABC
SQL_APPLY_MSFT_user=msftusr
SQL_APPLY_MSFT_password=msftpwd
// Login information used when applying to an Oracle database
SQL_APPLY_ORACLE_version=ORACLE10g
SQL_APPLY_ORACLE_server=oradb
SQL_APPLY_ORACLE_user=orausr
SQL_APPLY_ORACLE_password=orapwd
// Login information used when applying to a Sybase database
SQL_APPLY_SYBASE_version=SYBASE125
SQL_APPLY_SYBASE_database=sybdb
SQL_APPLY_SYBASE_server=sybdb
SQL_APPLY_SYBASE_user=sybusr
SQL_APPLY_SYBASE_password=sybpwd
... (THIS GOES ON)