Visual Studio项目与解决方案


Answers:


70

解决方案是项目的容器,并跟踪项目之间的依赖关系。


128

我在其他答案中发现了一些缺少的信息(至少对于那些来自其他IDE(例如Eclipse)的人)。说解决方案是项目的容器只是事情的一部分。VS项目的概念特征(决定其“粒度”的因素)是一个项目产生一个输出:通常是可执行文件或库(dll)。因此,如果要编写使用相关代码的三个可执行文件的代码,则将创建一个解决方案和至少三个项目-可能更多。


2
不要忘记共享代码项目,这些项目无需单独生成程序集就可以包含在内。
AyCe

43

只是想出一个比喻。

解决方案就像房子,项目就像房间。每个房间都提供某种功能,而房子(房间的容器)则提供了将房间链接在一起并进行适当组织的方法。

有点老套,但是我很快就弥补了,所以请忍受我:)


26

Visual Studio似乎使事情变得更加混乱,这无济于事。“新项目”实际上创建了一个包含项目的新解决方案。“打开项目”实际上是打开一个包含一个(或多个)项目的解决方案。(文件菜单显示“打开项目/解决方案”,但实际上是在打开解决方案。只有“关闭项目”才是正确的“关闭解决方案”。

因此,在VS中,您始终在解决方案中工作。许多解决方案仅包含一个项目,而新的开发人员可能将它们视为同一件事。但是,您可以将其他项目添加到解决方案中。


在一个解决方案中包含多个项目的意义何在?我不明白这一点..
西甲

12

万一有人决定向下滚动...我认为MS文档在描述差异方面做得很好。我已经在此处复制粘贴(并改写了)相关位:

在Visual Studio中创建应用程序,应用程序,网站,Web应用程序,脚本,插件等时,您将从项目开始。从逻辑上讲,一个项目包含所有源代码文件,图标,图像,数据文件以及将被编译为可执行程序或网站的所有其他内容,或者需要执行该项目才能进行编译。项目还包含程序将与之通信的各种服务或组件可能需要的所有编译器设置和其他配置文件。

如果您不想,则不必使用解决方案或项目。您可以简单地在Visual Studio中打开文件并开始编辑代码。

在字面意义上,一个项目是一个XML文件(.vbproj.csproj.vcxproj),它定义与路径的所有项目沿虚拟文件夹的层次中,“包含”和所有的生成设置。

在Visual Studio中,解决方案资源管理器使用项目文件来显示项目内容和设置。编译项目时,MSBuild引擎将使用项目文件来创建可执行文件。您还可以自定义项目以产生其他类型的输出。

从逻辑上讲,一个项目包含在解决方案中的文件系统中,该解决方案可能包含一个或多个项目,以及生成信息,Visual Studio窗口设置以及与任何项目都不相关的任何其他文件。从字面上看,解决方案是一个具有自己独特格式的文本文件。通常不打算手动编辑它。

解决方案具有一个关联的.suo文件,该文件为项目中的每个用户存储设置,首选项和配置信息。


7

一个解决方案可以有多个项目。

解决方案还可以管理其不同项目之间的依赖关系...确保每个项目都以适当的顺序构建,以使最终解决方案正常工作。


3

项目包含组成应用程序或应用程序组件的可执行文件和库文件。

解决方案是组成应用程序的逻辑相关项目的占位符。例如,您可以为应用程序的GUI,数据库访问层等创建单独的项目。这些项目将是您程序功能的特定部门,而解决方案将是将所有项目统一在一个应用程序中的保护伞。


2

解决方案是项目的容器-您也可以使用它们来组织在不同相关项目(共享dll等)中使用的项目。


2

一个解决方案是可读的文本文件,其扩展.sln并具有描述一个结构化内容的项目,它包含的内容。一个项目是可读的XML格式的文本文件,其扩展名是.vcxproj根据它的XML模式具有结构化的内容,其主要目的是包含源代码的文件名和它们的依赖或引用其他项目的源代码,以及上市。


0

解决方案是Visual Studio用于组织一个或多个相关项目的容器。在Visual Studio中打开解决方案时,它将自动加载它包含的所有项目。

在Visual Studio中创建新项目时,如果尚未打开解决方案,它将自动创建解决方案以容纳该项目。

您可以在解决方案中设置项目对其他项目的依赖关系。在构建依赖项目之后,再构建依赖项目。

有关更多详细信息,请参阅-https: //docs.microsoft.com/zh-cn/visualstudio/ide/quickstart-projects-solutions

如果您来自Eclipse,那么您可能会去构建项目的路径并添加对其他项目的依赖关系或添加外部jar。在VS中,您可以在称为解决方案的单个容器中进行此操作,其中所有相关项目都组合在一起。

例如。假设您是在Xamrin中构建的android和iOS应用程序,那么一些通用的代码和资源可能会放在一个单独的项目中,然后您的android和iOS项目就可以依赖于该通用代码项目。您也可以有项目来测试这些项目等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.