什么是 C# 解决方案以及如何使用它?

What is a C# solution and how to use it?

我是 C# 的新手(来自 Python 和 C),当我在 Monodevelop 或 Visual Studio 中开始一个新项目时,该项目被放入一个 "solution" 容器中。

我查看了 Microsoft 对什么是解决方案的描述,但我并不真正理解它的好处以及我应该如何使用它。

Microsoft documentation 说:

A project is contained, in a logical sense and in the file system, within a solution, which may contain one or more projects, along with build information, Visual Studio window settings, and any miscellaneous files that aren't associated with any project. In a literal sense, the solution is a text file with its own unique format; it is generally not intended to be edited by hand.

谁能解释一下 "solutions" 在这里干什么?

一个解决方案将您所有的项目 (dll)、文件、配置等组合在一起,您提供的报价是不言自明的:

A project is contained, in a logical sense and in the file system, within a solution...

一个解决方案是 "Container" 您的项目。

例如:如果您编写一个 windows 应用程序,您可以有一个项目用于 UI-stuff 和一个项目用于后端逻辑。

为了轻松处理这两个项目,您将它们捆绑到一个解决方案中,不仅允许您调试这两个项目,还可以按照您指定的顺序构建它们。

Advantages

Solutions allow you to concentrate on developing and deploying your projects, instead of sorting through all the details of managing project files, components, and objects. Each Visual Studio solution allows you to:

Work on multiple projects within the same instance of the IDE.

Work on items using settings and options that apply to an entire set of projects.

Use Solution Explorer to help develop and deploy your application.

Manage additional files opened outside the context of a solution or project.

阅读整篇文章了解更多详情:Solutions as Containers

解决方案包含一个或多个项目。例如,一个解决方案包含一个 Web 项目、一个移动项目和一个 windows 服务项目。所以,我的应用程序的解决方案有 3 个项目。

解决方案的好处是您可以在其中添加多个项目。 如果你有一个使用你自己的库的项目,这很好

那么您的解决方案将包含您的主项目和您的库项目。他们都可以相互依赖,以便按照正确的顺序构建。

如果没有解决方案,您将只有主项目,并且必须单独构建库

解决方案是一个结合了多个项目的工作区,这些项目通常相互关联。当某些代码需要在多个项目之间共享时,该构造非常有用。

例如,如果您正在开发一个带有单独服务器端组件的网站,您可以将它分成几个相关项目:

  • 包含公共接口的项目,生成一个 DLL
  • 包含数据库定义的项目,生成 RDBMS 部署脚本
  • 包含服务器端 API 实现的项目,生成可执行文件
  • 网站项目,生成IIS部署脚本

这四个项目是相互关联的。将它们放在一个解决方案中可以让您访问各个部分,同时利用 Visual Studio 为您简化使用搜索并帮助重构的通用索引。

虽然所有其他答案都是正确的,但我觉得他们缺少概念上的原因。

一个项目是一个独立的工作,它可以是一个 Win Forms 应用程序、一个 Class 库、一个网站、Web 服务等。

但是,问题的解决方案可能需要多个部分才能工作,即 Win Forms 应用程序需要 Class 库才能工作,Web 服务也是如此,但网站可能需要 Web 服务。

解决方案文件是此的概念化模型。

如果您的问题是 Win Forms 应用程序,那么您创建一个解决方案并添加 Win Forms 应用程序和库。

如果您的问题出在网站上,那么您可以创建解决方案并添加网站、Web 服务和库。

包含库的项目在两个解决方案中可以相同,这意味着您不必复制代码或跟踪项目的依赖项,因为它所依赖的一切都已经在您的解决方案中。

简而言之:解决方案是您工作的总和。