1

私は独自のプロジェクトを使用する VS2010 ソリューションを持っています (それらはこのソリューションに直接関連していると考えているため、そのソリューションのフォルダーにあります) が、他のいくつかのソリューションやプロジェクトからのコードも再利用します - このソリューションに取り組んでいるときに、私は他の関係のないプログラムの一部として、特定のタスクを実行するためのコードを既に作成していました。

TortoiseHg を使用して Mercurial リポジトリとして維持されているメイン ソリューション フォルダーがありますが、他の外部プロジェクトは含まれていません。ローカル リポジトリが BitBucket リポジトリにプッシュされると、メイン ソリューションのコードはそこにありますが、外部プロジェクトのコードは当然欠落しています。

この問題を解決するにはどうすればよいですか?

  • そのままにしておくと便利ですが (ハード ドライブ上のコードを移動するときや、使用する外部プロジェクトを変更するときは注意が必要かもしれませんが)、BitBucket リポジトリを構築しようとする人は誰でもできません。いくつかの重要なコードが基本的に欠落しているためです(slnファイルが持っていないプロジェクトを指しているため、VSも文句を言います)。
  • すべてのプロジェクトを含めると問題は解決しますが、リポジトリのディレクトリ構造をやり直す必要があり、1 つのソリューションだけに関心がある人にとっては無関係なコードを多数含める必要があります。また、一連のコミットで外部プロジェクトを独自のリポジトリに変更する場合、これらすべての変更を 1 つの大きな BLOB でこのソリューションのリポジトリにコミットする必要もあります。
  • 外部プロジェクトを dll に事前にビルドし、それらの dll をソリューションとリポジトリにアタッチし、外部プロジェクトのソース コードを忘れることが理想的です。ただし、これを行う方法がわかりません。また、ソース コードが存在しないため、dll を使用するのが難しくなりますか? インテリセンスは壊れますか? dll を使用している場合でもドキュメントは表示されますか?

基本的な質問で申し訳ありませんが、これを行う「正しい」方法についてはかなり混乱しています。

4

2 に答える 2

2

最後のオプションは、私には最も簡単に思えます。それぞれのビルド メニューを使用して、外部ソリューション/プロジェクトを .dll にコンパイルします (必ずリリース モードでビルドしてください)。

次に、バージョン管理されたメイン プロジェクトの参照を dll ファイルに追加します。これにより IntelliSense が壊れることはなく、dll ファイルはソース コードと共に配布されます。

于 2012-10-17T21:22:56.003 に答える
0

Mercurial の自然な方法 (サース ツリーの制御) では、Subrepository拡張 (ほとんど同じタスクを持つGuestRepoの方が私にとってはより強力に思えます) または、おそらくhgforestについて考えることができます。

于 2012-10-17T21:51:00.900 に答える