2

約1年前、当社は主に2人の上級開発者によって作成された比較的大きなソフトウェアパッケージをリリースしました。デモンストレーションを簡単にするために、これを「プロジェクトA」と呼びます。それ以来、私たちは新しいソフトウェアパッケージ「プロジェクトB」に取り組んでおり、そのツリーにはプロジェクトAのブランチがあります。

プロジェクトBにはプロジェクトAへの参照がありますが、プロジェクトBの終わりが近づいているので、AからBも参照する必要があります。したがって、Aのブランチをマージした後、Bと一緒に稼働する前に、 2つのプロジェクト間でコアライブラリをマージします。

この種の状況であなたが経験したことは何ですか?このプロジェクトで学んだいくつかのベストプラクティスと教訓は何ですか?プロジェクトAの残りのソースコードへの影響を最小限に抑えて、コアライブラリを最適にマージするにはどうすればよいですか?

編集: プロジェクトAの名前空間を保持しながら、プロジェクトBのコアライブラリ(最終的には会社のコアライブラリになる)にコードを配置することの実現可能性について、あなたはどう思いますか?そこから、レガシープロジェクトの新しい会社のコアライブラリを参照するだけです...

編集2: 返信ありがとうございます。たぶん、もう少し技術的な説明が必要です。これらのプロジェクトはどちらも非常に密接に関連していますが、それぞれにコアライブラリ用の独自の.NETクラスライブラリプロジェクトがあります。それを超えて、各ライブラリは他のさまざまな.NETプロジェクトによって参照されます。内部および外部のWebアプリ、フォームアプリなど。私の質問の多くは、ソースコードがどこにあるべきかということです。これらは、2つの別々の.NETプロジェクトのままである必要があるとは思いませんが、1つのプロジェクトに両方が含まれ、既存の名前空間を最初に保持します。 。開発を続けるにつれ、名前空間の組み合わせ、重複する機能のクリアなど、リファクタリングを行います。両方の既存のライブラリに含まれる機能が今後のプロジェクトで役立つことは間違いありません。また、既存の両方で共有する必要もあります。 「コア」ライブラリ。

4

2 に答える 2

1

これは、言語、環境、およびライブラリの種類 (動的/静的にリンク) に大きく依存していると思います。どのような問題が予想されますか?

  • 競合する識別子
  • 重複機能
  • ビルドプロセスの変更
  • 統合/単体テスト
于 2009-05-20T21:03:43.043 に答える
1

B と A の間の循環参照の可能性に問題がありますか?

それとも、A と BA の間の競合する名前空間についてもっと知りたいですか?

A と BA の両方が同じプロジェクト内のまったく同じ名前空間 (A) にある場合、深刻な競合が発生する可能性があると思います。

1 つの可能性は、両方のライブラリに名前空間プレフィックスを追加することです。必要に応じて、どちらをインポートできますか?

すなわち

A は V1.A になり、BA は V2.A になります (プロジェクト B の下)。

では、V1 が必要な場合は V1 名前空間をインポートするだけで、V2 が必要な場合は V2 名前空間をインポートすると、参照が整列するはずです。

A の名前空間をいじると、V1.A ではなく A として既に参照しているレガシー コードが壊れてしまうため、いくつかの問題が発生します。

正直なところ、プロジェクトでは、アセンブリと名前空間が一意である必要があるだけだと思います。したがって、同じ名前空間を持つ 2 つのバージョンのアセンブリがある場合、そのうちの 1 つを削除する必要があります。

于 2009-05-20T22:40:28.293 に答える