web-dev-qa-db-ja.com

それぞれに個別のコードベースを持たずに、ほぼ同一の内部/外部プログラムを維持するにはどうすればよいですか?

会社が社内で使用しているプログラムがありますが、ベンダーにも送信されます。ベンダーバージョンは、一部の機能が欠落していることを除いて同じであり、インストーラーを使用します。 XMLファイルから2行を削除するだけでよく、外部での使用に適しています。

プロジェクトごとに個別のコードベースを維持することなく、このようなプロジェクトを作成するための「典型的な」方法はありますか?

違いがある場合、プログラムはC#で記述され、Visual Studio 2010を使用して開発され、dllとしてコンパイルされ、Windows7で実行されます。

4
Brandon

プロジェクトごとに個別のコードベースを維持することなく、このようなプロジェクトを作成するための「典型的な」方法はありますか?

より複雑なアプローチ(構成、プラグインなど)が説明されています。しかし、比較的単純なケースでは、単純なアプローチを使用したほうがよい場合があります。つまり、手動で行うことを自動化する

  1. 1つのコードベースを維持する
  2. / vendorおよび/ internalサブディレクトリを含む「config」フォルダを追加します。各サブディレクトリには、各バージョンに含まれる特定のXMLファイルが含まれています。
  3. -internalまたは-vendorをパラメーターとして受け入れるビルドスクリプトを作成します

ビルドスクリプトは、それぞれのXMLを適切な場所にコピーするだけで、出荷可能なソフトウェア(つまり、バイナリと構成ファイル)を作成します。

5
miraculixx

これは、機能を含める/除外するための弱いアプローチのように聞こえます。必要なのは、1人の顧客がプログラムをバックワードエンジニアリングし、追加するXML要素を見つけ出すだけで、非表示にしたい機能にアクセスできます。

より良いアプローチは、プラグインシステムを使用することです。このシステムでは、ソフトウェアが追加機能を含むアセンブリを探しますが、そのアセンブリがない場合は正常に失敗します。

このように、個別のコードベースは必要ありません。同じソフトウェアをどこにでもインストールし、プラグインをローカルにインストールするだけです。

1
pdr

ライセンスに基づいて、さまざまなモジュールがロード/アクティブ化されるライセンスシステムがあります。

しかし、コードベース全体は常に同じです。

1
Morons