VSを初めて使用する場合、これら2つの概念をどのように考えることができますか?違いは何ですか?
10 に答える
他の回答にいくつかの不足している情報があります(少なくとも、Eclipseなどの他のIDEから来た人にとっては)。ソリューションがプロジェクトのコンテナであると言うことは、その一部にすぎません。VSプロジェクトの概念的な特徴(その「粒度」を決定するもの)は、1つのプロジェクトが1つの出力(通常は実行可能ファイルまたはライブラリ(dll))を生成することです。したがって、関連するコードを使用する3つの実行可能ファイルをコーディングする場合は、1つのソリューションと少なくとも3つのプロジェクト(おそらくそれ以上)を作成します。
ソリューションはプロジェクトのコンテナーであり、プロジェクト間の依存関係を追跡します。
比喩を思い付くためだけに。
解決策は家のようなものであり、部屋のようなプロジェクトです。各部屋は機能の一部を提供しますが、部屋のコンテナである家は、部屋をリンクして適切に整理する手段を提供します。
一種の角質ですが、私はその場で作りましたので、我慢してください:)
VisualStudioが物事をより混乱させるように見えることは助けにはなりません。「新しいプロジェクト」は、実際にプロジェクトを含む新しいソリューションを作成します。「プロジェクトを開く」は、実際には1つ(または複数)のプロジェクトを含むソリューションを開きます。(ファイルメニューには「プロジェクト/ソリューションを開く」と表示されていますが、実際にはソリューションを開いています。「プロジェクトを閉じる」はなく、「ソリューションを閉じる」だけが正確です。
したがって、VSでは常にソリューション内で作業しています。多くのソリューションには1つのプロジェクトしか含まれておらず、新しい開発者はそれらを同じものと考える可能性があります。ただし、他のプロジェクトをソリューションに追加することはできます。
誰かがここまで下にスクロールすることにした場合に備えて...私はMSのドキュメントが違いを説明するのにかなり良い仕事をしたと思いました。ここに関連するビットをコピーして貼り付けました(そして言い換えました):
Visual Studioでアプリ、アプリケーション、Webサイト、Webアプリ、スクリプト、プラグインなどを作成するときは、プロジェクトから始めます。論理的な意味では、プロジェクトには、実行可能プログラムまたはWebサイトにコンパイルされる、またはコンパイルを実行するために必要なすべてのソースコードファイル、アイコン、画像、データファイルなどが含まれます。プロジェクトには、プログラムが通信するさまざまなサービスまたはコンポーネントで必要になる可能性のあるすべてのコンパイラ設定およびその他の構成ファイルも含まれています。
必要がなければ、ソリューションやプロジェクトを使用する必要はありません。Visual Studioでファイルを開き、コードの編集を開始するだけです。
文字通りの意味で、プロジェクトはXMLファイル(、、
.vbproj
)であり、仮想フォルダー階層と.csproj
、プロジェクト.vcxproj
に「含まれる」すべてのアイテムおよびすべてのビルド設定へのパスを定義します。Visual Studioでは、プロジェクトファイルはソリューションエクスプローラーによってプロジェクトの内容と設定を表示するために使用されます。プロジェクトをコンパイルすると、MSBuildエンジンはプロジェクトファイルを使用して実行可能ファイルを作成します。プロジェクトをカスタマイズして、他の種類の出力を生成することもできます。
プロジェクトは、論理的な意味で、ファイルシステム内のソリューション内に含まれます。ソリューションには、ビルド情報、Visual Studioウィンドウ設定、およびプロジェクトに関連付けられていないその他のファイルとともに、1つ以上のプロジェクトが含まれる場合があります。文字通りの意味で、ソリューションは独自の形式のテキストファイルです。通常、手動で編集することは意図されていません。
ソリューションには.suo
、プロジェクトに携わった各ユーザーの設定、設定、および構成情報を格納するファイルが関連付けられています。
ソリューションには多くのプロジェクトを含めることができます。
ソリューションは、異なるプロジェクト間の依存関係の管理も処理できます...最終的なソリューションが機能するために、各プロジェクトが適切な順序でビルドされるようにします。
プロジェクトには、アプリケーションまたはアプリケーションのコンポーネントを構成する実行可能ファイルとライブラリファイルが含まれています。
ソリューションは、アプリケーションを構成する論理的に関連するプロジェクトのプレースホルダーです。たとえば、アプリケーションのGUI、データベースアクセス層などに個別のプロジェクトを設定できます。プロジェクトは、プログラムの機能の特定の部門であり、ソリューションは、1つのアプリケーションの下でそれらすべてを統合する包括的なものになります。
解決策は、拡張子がで、含まれているプロジェクト.sln
を説明する構造化されたコンテンツを持つ読み取り可能なテキストファイルです。プロジェクトは読み取り可能なXML形式のテキストファイルであり、その拡張子はXMLスキーマに従って構造化されたコンテンツであり、その主な目的は、ソースコードのファイル名とその依存関係、または他のプロジェクトのソースコードへの参照のリストを含めることです。.vcxproj
ソリューションはプロジェクトのコンテナです。ソリューションを使用して、関連するさまざまなプロジェクト(共有dllなど)で使用されるアイテムを整理することもできます。
ソリューションは、1つ以上の関連プロジェクトを整理するためにVisualStudioによって使用されるコンテナーです。Visual Studioでソリューションを開くと、ソリューションに含まれるすべてのプロジェクトが自動的に読み込まれます。
Visual Studioで新しいプロジェクトを作成すると、まだ開いているソリューションがない場合に、プロジェクトを格納するためのソリューションが自動的に作成されます。
ソリューション内の他のプロジェクトに対するプロジェクトの依存関係を設定できます。依存プロジェクトは、依存プロジェクトがビルドされた後にビルドされます。
詳細については、https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-projects-solutionsを参照してください。
Eclipseのバックグラウンドを使用している場合は、プロジェクトのパスをビルドして、他のプロジェクトへの依存関係を追加するか、外部jarを追加する可能性があります。VSでは、関連するすべてのプロジェクトがグループ化されたソリューションと呼ばれる単一のコンテナーでこれを行うことができます。
例えば。xamrinでビルドしてAndroidとiOSのアプリを作成しているとしましょう。別のプロジェクトに入れることができるいくつかの共通のコードとリソースがあり、AndroidとiOSのプロジェクトはこの共通のコードプロジェクトに依存できます。また、これらのプロジェクトなどをテストするプロジェクトを持つこともできます。