1

ビルドには Subversion と Nant を使用します。複数のサブプロジェクトに依存するメイン プロジェクトがあります。サブプロジェクトは、Subversion 内の個別のプロジェクトとして存在します。

私の質問は: メイン プロジェクトの nant ビルド スクリプトは、参照されているすべてのサブ プロジェクトとそれ自体をビルドする必要がありますか? または、サブプロジェクトは自分自身をビルドする方法を知っていて、メインのビルド ファイルからサブプロジェクトのビルド ファイルを何らかの方法で呼び出し、すべての出力をメイン プロジェクトのビルド出力にアセンブルしますか?

現在、mainproject ビルド ファイルですべてのサブプロジェクトをビルドしています。つまり、ビルド ファイル内の各サブプロジェクトに nant ターゲットがあります。ただし、これにより、メイン ビルド ファイルとサブプロジェクトの間に密結合が生じているようです。「サブプロジェクトは自分でビルドする方法を知っている」と言って、メインプロジェクトから自分でビルドして出力を組み立てるように依頼できればいいのにと思います。

参考までに、私のリポジトリは次のようになります。

/Repo
  /MainProject
    /trunk
      /doc   <-- documentation
      /lib   <-- binary-only DLLs (usually 3rd party)
      /src   <-- source code for MainProject
      /svn-externals  <-- hold references to other projects in repository
...
  /ClassLib1
    /trunk
      /doc
      /lib
      /src
      /svn-externals
...
  /ClassLib2
    /trunk
      /doc
      /lib
      /src
      /svn-externals
...
  /ClassLibCommon
    /trunk
      /doc
      /lib
      /src
      /svn-externals

Subversion svn-externals プロパティを使用してサブプロジェクトを取り込みます。したがって、私の作業コピーは次のようになります。

/MainProject
  /build
  /doc
  /lib
  /src
    /MainProject
  /svn-externals
    /ClassLib1 <-- svn external to svn://xyz/repo/ClassLib1/trunk
      /doc
      /lib
      /src
      /svn-externals
        /ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
          ...
    /ClassLib2 <-- svn external to svn://xyz/repo/ClassLib2/trunk
      /doc
      /lib
      /src
      /svn-externals
        /ClassLibCommon <- svn external to svn://xyz/repo/ClassLibCommon/trunk
          ...
4

1 に答える 1

0

あなたの質問に対する答えは、もちろん「場合による」です。

あなたが言わないのは、ソリューション内の「サブプロジェクト」をどのように参照するか、またはそれらが他のソリューション (メインプロジェクト) で使用されているかどうかです。それらはプロジェクトの参照ですか? その場合は、MSBuild を呼び出してソリューションをビルドする必要はありません。これにより、これらの依存関係に基づいてすべてのサブ プロジェクトがビルドされます。これがあなたがどのようにセットアップしたかを推測することしかできません。

個人的には、あなたのように見えるセットアップがあった場合、プロジェクト参照を使用したり、各プロジェクトのすべてのコードへの外部を使用したりしません。これらのサブ プロジェクトは、サード パーティの DLL を扱うのと同じように扱います。

これを行うと、DLL 参照を使用することになります。これにより、サブプロジェクトがメイン プロジェクトから切り離されます。これは、特にこれらのサブプロジェクトが他のプロジェクトによって参照されている場合に、私が行く方法です。

はい、ここで、ソース管理にそれらを保存する方法など、他の決定を下す必要があります。lib フォルダーに外部ファイルを配置することも、DLL のコピーを lib フォルダーに入れることもできます。これは、バージョン管理の方法にも依存します。

また、CC.Net などのある種の CI を使用しているかどうかについても言及していません。そうした場合、サブプロジェクトのいずれかが変更された場合にメイン プロジェクトの再構築をトリガーすることができます。

于 2009-09-23T21:55:22.507 に答える