web-dev-qa-db-ja.com

VisualStudioソリューションおよびプロジェクトの命名規則

私たちは、BIGプロジェクトを次のように編成することを考えていました。

\trunk 
 [CompanyName] 
 [Product1] 
 [Project1] 
 CompanyName.Product1.Project1.csproj 
 [Project2 ] 
 CompanyName.Product1.Project2.csproj 
 CompanyName.Product1.sln 
 [Product2] 

名前空間名はフォルダー構造に従うというMicrosoftの推奨事項に従おうとしましたが、このようにすることには欠点がありますか?適用するソリューションとプロジェクトの命名規則は何ですか?

37

あなたが私に尋ねれば、それはかなりよさそうだ。特に、フルネームスペース部分を含むフルネームでプロジェクトに名前を付けます。これは、プロジェクトが多数ある場合、特に異なる製品間で同様のプロジェクトが発生する場合に役立ちます。

製品とプロジェクト(プロジェクトはソリューションプロジェクトというよりもアプリケーションのようなものだと思います)をどのように分割するかは、組織の規模、構成、好みに大きく依存します。

12
dove

私が使用した別の方法は、すべてのソリューションファイルを同じディレクトリに置くことです。

\ trunk 
 [CompanyName] 
 CompanyName.Product1.sln 
 CompanyName.Product2.sln 
 [Product1] 
 [Project1] 
 CompanyName.Product1.Project1.csproj 
 [Project2] 
 CompanyName.Product1.Project2.csproj 
 [Product2] 
 [Project3] 
 CompanyName .Product2.Project3.csproj 
4
kenwarner

ファイル名に関して-何が何を生成するかをはるかに簡単に知ることができるので、プロジェクトファイル名が出力アセンブリ名と一致することをお勧めします。ディレクトリリストの作成は、ツリー内のcsprojファイルで、関心のあるアセンブリを生成するファイルを検索するよりもはるかに高速です。

ビルド環境に影響を与えないため、ソリューションファイルについては気になりません。そのため、必要な範囲(およびテストメタデータなどの特定のソリューションごとの項目)を自分で作成することになります。 。

フォルダ構造に関して-プロジェクトファイルにつながるフォルダが名前空間と一致していても、あまり心配する必要はありません。プロジェクトにとって最も意味のある方法でコードをディスクに配置したいと思います。これは、テストコードと製品コードが兄弟ディレクトリにあることを意味する場合もあります。それらがはるかに離れていることを意味する場合もあります。複数のチームによって提供された名前空間が存在する場合があります(その設計を支持するのではなく、単なる現実です)が、それらのチームは何らかの理由で独自のフォルダーに住みたいと考えています。

プロジェクト全体の設計におけるバージョン管理の分岐戦略の重要性を忘れないでください。会社と製品の境界はブランチである可能性があるため、必ずしもディスク上のディレクトリとして表す必要はありません。

ただし、これを分析麻痺の原因にしないでください。合理的な選択をしてください。バージョン管理を使用します。間違っている場合は、いつでも後で変更できます。

3
Robert Horvick

教科書から取ったように見えます。これが通常、私のソリューションの設定方法であり、長年にわたって非常にうまく機能することがわかりました。

2
Fredrik Mörk

は、私にはよく見えますよ。

デフォルトでは、VisualStudioプロジェクトのデフォルトの名前空間はプロジェクト名にすぎないことに注意してください。確かに、これは、名前空間のようにプロジェクトに名前を付けることが「VisualStudioWay」であることを示しています。

ソリューションは、最も自然に製品/プロジェクトにちなんで名付けられています。あなたが示すように。

1
Tor Haugen

これが良いと思います

\trunk
  [CompanyName]
    [Product1]
      CompanyName.Product1.sln
      [Main] --Optional
        CompanyName.Product1.csproj
      [Project1]
        CompanyName.Product1.Project1.csproj
      [Project2]
        CompanyName.Product1.Project2.csproj
    [Product2]
      CompanyName.Product2.sln
      [Main] --Optional
        CompanyName.Product2.csproj
      [Project1]
        CompanyName.Product2.Project3.csproj
      [Project2]
        CompanyName.Product2.Project2.csproj
      [Project3]
        CompanyName.Product2.Project2.csproj

どうして?リポジトリからコードを取得すると、たとえば「Product1」ディレクトリが取得されるため、作業に必要なものがすべて含まれています。 [Main]ディレクトリには、デフォルトのベース名前空間(通常はexeまたはメインプロジェクト)が含まれています。オプションです。

0
prampe