web-dev-qa-db-ja.com

Visual Studioプロジェクトとソリューション

VSを初めて使用する場合、これら2つの概念をどのように考えることができますか、違いは何ですか?

92
bmw0128

ソリューションはプロジェクトのコンテナであり、プロジェクト間の依存関係を追跡します。

67
pzr

(少なくともEclipseなどの他のIDEから来た人のために)他の回答で不足している情報を見つけました。ソリューションがプロジェクトのコンテナであると言うことは、その一部にすぎません。 VSプロジェクトの概念的な特徴(「粒度」を決定するもの)は、1つのプロジェクトが1つの出力を生成する:通常、実行可能ファイルまたはライブラリ(dll)です。したがって、関連するコードを使用する3つの実行可能ファイルをコーディングする場合、1つのソリューションと少なくとも3つのプロジェクト(おそらくそれ以上)を作成します。

115
leonbloy

メタファーを思い付くために..

ソリューションは家のようなもので、プロジェクトは部屋のようなものです。各部屋は機能の一部を提供しますが、部屋のコンテナである家は部屋をリンクして適切に整理する手段を提供します。

ちょっと角質ですが、私はその場で作り上げたので、私と一緒に耐えてください:)

38
Cody C

Visual Studioが物事をより混乱させているように見えることは役に立ちません。 「新しいプロジェクト」は、実際にプロジェクトを含む新しいソリューションを作成します。 「プロジェクトを開く」は、実際には1つ(または多くの)プロジェクトを含むソリューションを開きます。 (ファイルメニューには[プロジェクト/ソリューションを開く]と表示されますが、実際にはソリューションを開いています。正確な[プロジェクトを閉じる]のみ[ソリューションを閉じる]はありません。

そのため、VSでは常にソリューション内で作業しています。多くのソリューションに含まれるプロジェクトは1つだけであり、新しい開発者はそれらを同じものと考える可能性があります。ただし、他のプロジェクトをソリューションに追加できます。

22
Chryses

誰かがここまでスクロールダウンすることに決めた場合... MS docs は違いを説明するのにかなり良い仕事をしたと思いました。ここに関連する部分を貼り付けて(言い換えて)コピーしました。

Visual Studioでアプリ、アプリケーション、Webサイト、Webアプリ、スクリプト、プラグインなどを作成するときは、プロジェクトから始めます。論理的な意味では、プロジェクトには、すべてのソースコードファイル、アイコン、画像、データファイル、および実行可能プログラムまたはWebサイトにコンパイルされる、またはコンパイルを実行するために必要なその他のものが含まれます。プロジェクトには、プログラムが通信するさまざまなサービスまたはコンポーネントで必要となる可能性のあるすべてのコンパイラ設定およびその他の構成ファイルも含まれています。

必要ない場合は、ソリューションやプロジェクトを使用する必要はありません。 Visual Studioでファイルを開くだけで、コードの編集を開始できます。

文字通りの意味で、プロジェクトはXMLファイル(.vbproj.csproj.vcxproj)であり、仮想フォルダー階層を、それが「含む」すべてのアイテムへのパスとともに定義します。ビルド設定。

Visual Studioでは、プロジェクトファイルはソリューションエクスプローラーによって使用され、プロジェクトの内容と設定が表示されます。プロジェクトをコンパイルすると、MSBuildエンジンはプロジェクトファイルを使用して実行可能ファイルを作成します。プロジェクトをカスタマイズして、他の種類の出力を生成することもできます。

プロジェクトは、論理的な意味で、ファイルシステム内のソリューション内に含まれます。ソリューションには、ビルド情報、Visual Studioウィンドウ設定、プロジェクトに関連付けられていないその他のファイルとともに、1つ以上のプロジェクトが含まれます。文字通りの意味で、ソリューションは独自のフォーマットを持つテキストファイルです。通常、手で編集することは意図されていません。

ソリューションには、プロジェクトで作業した各ユーザーの設定、設定、および構成情報を格納する.suoファイルが関連付けられています。

9
jrahhali

ソリューションには多くのプロジェクトを含めることができます。

ソリューションは、異なるプロジェクト間の依存関係の管理も処理できます...各プロジェクトが最終的なソリューションが機能するために適切な順序でビルドされるようにします。

6
Justin Niessner

プロジェクトには、アプリケーションまたはアプリケーションのコンポーネントを構成する実行可能ファイルとライブラリファイルが含まれます。

ソリューションは、アプリケーションを構成する論理的に関連するプロジェクトのプレースホルダーです。たとえば、アプリケーションのGUI、データベースアクセスレイヤーなどに対して個別のプロジェクトを作成できます。プロジェクトは、プログラムの機能の特定の部門であり、ソリューションは、1つのアプリケーションの下でそれらすべてを統合する傘となります。

3
David

solutionは、拡張子が.slnおよび含まれるprojectsを説明する構造化コンテンツを持っている。 projectは、読み取り可能な[〜#〜] xml [〜#〜]拡張子が.vcxprojおよびXMLスキーマに従って構造化されたコンテンツを持ち、その主な目的は、ソースコードのファイル名とその依存関係または他のプロジェクトのソースコードへの参照のリストを含めることです。

2
typelogic

ソリューションはプロジェクトのコンテナーです-また、ソリューションを使用して、関連するさまざまなプロジェクト(共有DLLなど)で使用されるアイテムを整理することもできます。

2
Oded

ソリューションは、1つ以上の関連プロジェクトを整理するためにVisual Studioで使用されるコンテナーです。 Visual Studioでソリューションを開くと、ソリューションに含まれるすべてのプロジェクトが自動的にロードされます。

Visual Studioで新しいプロジェクトを作成すると、ソリューションがまだ開いていない場合、プロジェクトを格納するソリューションが自動的に作成されます。

ソリューション内の他のプロジェクトにプロジェクトの依存関係を設定できます。依存プロジェクトは、依存しているプロジェクトがビルドされた後にビルドされます。

詳細については、- https://docs.Microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutions を参照してください

Eclipseのバックグラウンドを使用している場合は、おそらくプロジェクトのビルドパスに移動し、他のプロジェクトへの依存関係を追加するか、外部jarを追加します。 VSでは、すべての関連プロジェクトがグループ化されているソリューションと呼ばれる単一のコンテナでそれを行うことができます。

例えば。あなたがビルドしていて、AndroidとxamrinのiOSアプリである場合、別のプロジェクトに行くことができる一般的なコードとリソースがあり、その後、Android iOSプロジェクトは、この共通コードプロジェクトに依存することができます。また、これらのプロジェクトをテストするプロジェクトなどもあります。

0
Aniket Thakur