ベストプラクティス:コラボレーション環境、Bin ディレクトリ、SVN
-
08-06-2019 - |
質問
SVN を使用した共同開発環境で BIN ディレクトリをチェックインするためのベスト プラクティスは何ですか?プロジェクト レベルの参照をチェックインから除外する必要がありますか?すべての bin ディレクトリを追加する方が簡単ですか?
私は多くの DotNetNuke サイトを開発していますが、複数の開発者がいる環境では、環境を正しくセットアップするのは常に大変な作業であるようです。
(もちろん) 最終的な目標は、新しい開発者が SVN からトランクをチェックアウトし、DNN データベースを復元して、すべてが「動作」するようにすることです。
解決
GAC 内に存在すると予想されるアセンブリはすべて、GAC 内に留まる必要があります。これには、実稼働環境で GAC に展開する System.web.dll またはその他のサードパーティ DLL が含まれます。これは、新しい開発者がこれらのアセンブリをインストールする必要があることを意味します。
他のすべてのサードパーティ アセンブリは、相対パスを介して参照する必要があります。私の典型的な構造は次のとおりです。
-Project
--Project.sln
--References
---StructureMap.dll
---NUnit.dll
---System.Web.Mvc.dll
--Project.Web
---Project.Web.Proj
---Project.Web.Proj files
--Project
---Project.Proj
---Project.Proj files
Project.Web と Project は、root/References フォルダー内のアセンブリを相対的に参照します。これらの .dll は Subversion にチェックインされます。
それとは別に、 */bin */bin/* obj がグローバル無視パスに存在する必要があります。
この設定では、アセンブリへのすべての参照は、GAC を介して行われるか (そのため、すべてのコンピューターで機能するはずです)、ソリューション内の各プロジェクトに相対的に行われます。
他のヒント
これは .Net 固有の質問ですか?
一般に、すでに SCM にあるファイルから自動的に構築されたものは何もチェックインしないことがベスト プラクティスです。これらはすべて、自動ビルド プロセスの一部として作成されるのが理想的です。
もし bin
あなたが参照しているディレクトリには、プロジェクトのビルドではなく、サードパーティのバイナリが含まれている場合、このアドバイスは無視(反対票?)してください。
樹木外科医 は、空の .NET 開発ツリーを作成する優れたツールです。長年の使用を通じて調整され、多くのベストプラクティスが実装されています。
Java をコーディングしているときに、Maven はこの問題を解決するのに非常に役立ちます。pom.xml を scs にコミットすると、Maven リポジトリにすべての依存関係が含まれます。私にとってそれは良い方法のように思えます。
すべてのベンダー固有のヘッダーとバイナリを含むベンダー ディレクトリを使用するという慣行に従っています。目標は、製品をチェックアウトしてトップレベルのビルド スクリプトを実行するだけで、誰でも製品をビルドできるようにすることです。