2

これは、.NET/git とビルド システムを使用したプロジェクト構造に関する質問なので、簡潔にまとめます。

設定:

  • .NET (C# および VB.NET)
  • git (以前は svn、externals は使用しませんでした)

私が試した次のプロジェクト構造:

  • [アプリ名]
    • 。ギット
    • [NameOfApp - 直下のソリューションファイル]
      • 【プロジェクト1】
      • 【プロジェクト2】
    • 【構成】
    • [標準]: 開発者向けの標準構成 (
      リポジトリを最初に初期化するときにコピーされますが、変更することができます)
    • [スクリプト]: 一部のスクリプト、ビルド システムのスクリプト
    • [依存関係]
      • [依存関係 1]: サブモジュールです
        • 【メインフォルダ】
          • [ソリューションファイル]
            • 【プロジェクト】
        • [依存関係]
          • [従属1]
          • 【従属2】
            • [依存関係 2]: 別のサブモジュール
            • [別の解決策]: サブモジュールでは、ビルド プロセス中のいくつかの問題に対して、ほとんどヘルパーがいないことがあります。ビルド スクリプトによって呼び出されます。

すべてのプロジェクトに適した構造を探しています。上記の構造は、これまで 1 つのプロジェクトでのみ使用されています。

だから私の質問:

  • これはあなたにとって有効な設定のように見えますか? これが難しい質問であることは承知していますが、同様のセットアップをお持ちですか、または同様のセットアップで問題がありましたか?
  • gitサブモジュールをまったく使用しますか、それとももっと良いものがありますか? 彼らは悪であり、問​​題を引き起こす可能性があると言う人もいます。参考までに、私のサブモジュールは、多くのプロジェクトで使用されるプロジェクトです。依存関係にはソリューション ファイルが含まれている場合があるため、その下にプロジェクト フォルダーがあります。その中のプロジェクトは、私の mainapp で参照されます。サブツリーが適切かどうかわかりません。レポ (Android 用) についても聞いたことがあります。おそらくこれが解決策でしょうか? または、依存関係を管理するための他のツールはありますか?
  • 私の依存関係にも依存関係がある場合があります。したがって、再帰的なクローンを作成すると、サブ依存関係を持つやや奇妙な構造が得られます (上記の構造を参照)。メインアプリにサブ依存関係を追加する必要がある場合があります。これは、そこで何かを変更したいため、依存関係の再構築が必要になるためです。では、サブディペンデンシーまたはサブサブディペンデンシーをどのように維持するのでしょうか?
  • オープンソースの依存関係がある場合 (たとえば github から)、dll を直接使用しますか? それともフォークして git サブモジュールを追加しますか?
  • すべてのプロジェクトを projectreference として追加しますか、それとも dll を直接参照しますか?
  • どのビルドシステムが好きですか?

これらは「正解」が 1 つだけの質問ではないことは承知していますが、少しお役に立てて、考えを共有していただけないでしょうか。

ありがとう、サイバー1000

4

1 に答える 1

0

プロジェクト構造: 再帰的なサブモジュールの依存関係を持つのは自然なことです。それ以外の場合、サブモジュールはプロジェクト構造を想定する必要があります (親構造と一致するようにハードコードされた相対パス)。次に、サブモジュールは特定のプロジェクトに固有のものですが、開発するすべてのプロジェクトに適用できるわけではありません。

サブモジュール: よく知っている必要があります。dll にはバージョン管理の追跡可能性がないため、これは不可欠です。サブモジュールは、プロジェクトが現在使用している正確なバージョン (ハッシュ) を伝えることができます。

サブ依存関係を保持: ビルド サーバーは常に各ビルドの前に "git clean" を実行するため、保持しないでください。

open-source-dependencies: フォークしてサブモジュールとして使用します。必要に応じて若干の変更を加える場合があります。たとえば、プロジェクト ファイルは VS2005 で、VS2010 を使用しています。次に、プロジェクト ファイルを変更し、新しいバージョンが利用可能になったら上流のブランチをマージします。

プロジェクト参照: 可能であれば、ほとんどの場合、プロジェクト参照を使用します。

ビルド システム: CruiseControl.NET、.NET 担当者として。

于 2012-07-09T08:42:26.477 に答える