私の自動化された NAnt ビルドには、(SubSonic を使用して) データベースから大量のコードを生成するステップがあり、コードはデータベース内のスキーマ名と一致するフォルダーに分割されます。例えば:
- /生成コード
- /dbo
- SomeTable.cs
- その他のテーブル.cs
- /abc
- Customer.cs
- Order.cs
- /dbo
スキーマ名は、アプリが必要とする生成されたクラスを分離するためにあります。たとえば、この中央フォルダーから生成されたコードを取得する ABC アプリがあります。次のように、ビルド前のイベントでそれを行っています。
del /F /Q $(ProjectDir)Entities\generated*.cs
copy $(ProjectDir)....\generated-code\abc*.cs $(ProjectDir)Entities\generated*.cs
そのため、すべてのビルドで、Nant スクリプトはジェネレーターを実行し、すべてのコードを中央の保持場所に配置します。次に、ソリューション ビルドを開始します。これには、生成されたクラスを必要とする各プロジェクトのビルド前イベントが含まれます。
だからここに私が見ている摩擦があります:
1) 新しいアプリごとに、このビルド前イベントをセットアップする必要があります。これをしなければならないのはちょっと面倒です。
2)ビルドサーバーではコードを生成しないため、実際にはこれらの各コマンドの前に IF $(ConfigurationName) == "Debug" があるため、リリースビルドでは発生しません
3) コマンドが失敗し、ローカル ビルドが失敗することがあります。次の場合は失敗します: - 生成されたコードがまだない (新しいプロジェクトをセットアップしただけで、データベースがまだない) - ディレクトリに既存のコードがない (最初のビルド)
通常、これらはマイナーな修正であり、新しいプロジェクトまたは新しいマシンをビルドで起動して実行する方法をハッキングしただけですが、ワンクリック ビルドの涅槃を妨げています。
ですから、もう少し耐久性があるところでこれを改善する方法についての提案を聞きたいです。アプリケーション フォルダへのコードのコピーを NAnt スクリプトに移動することはできますか? これは私にはちょっと後ろ向きに思えますが、私はその議論に喜んで耳を傾けます。
OK、発射してください:)