Visual Studio 2010を使用していますが、これはVS2003で最初に考案されました。
私は私のチームに最高の提案を転送します。現在の設定ではほとんど嘔吐します。これは、.sqlファイルを含むほとんどのプロジェクトでのC#ソリューションです。Microsoft、Oracle、Sybaseをサポートしているため、Cプリプロセッサとよく似た自作のプリプロセッサですが、そのyacc
ようなツールを使用せずに自作のC#プログラムによって置換が実行される点が異なります。#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)