编程工作的组织--llorch的Visual Studio 基础教程(一)

通用的示例说明:

  • 本系列博客只讨论工具的基础,不讨论任何语言。

    • 甚至不讨论快捷键:-)
    • 可以用鼠标就完成本教程
  • IDE默认指代的是Visual Studio 2013 Community Edition。 本系列文章的结尾,你可以熟练地使用它写程序。
  • 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要。
  • 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[]、{}、/、>>、=、(,)。
  • 检查一个设置项的表示方法为:
    • [窗口名称]/{菜单名称}/{子菜单名称}/{设置项项名称}=设置项的值
  • 例如默认的Debug配置:
    • [主窗口]/{解决方案配置管理器}=Debug
  • 检查多个设置项时,按照单个设置项的方式,逐一写出
  • 检查一个设置项有多个值的时候,用括号包括并用内部的逗号分隔,如:
    • [解决方案资源管理器]/{项目名称}/{引用}=(System,System.Core,System.Data,System.Xml)
  • 执行一个左键单击序列,就是将最后的检查项换成”/”,例如退出IDE:
    • [主窗口]/{文件}/{退出}/
  • 右键菜单的连接符号为>>,例如刷新Windows桌面:
    • [桌面]>>{刷新}/
  • 弹出窗口中的设置项的表示与上类似
  • MDI子窗口中设置项的表示与上类似,注意到在Visual Studio中,MDI子窗口的名称在它的左上角或者可能自动吸附到主窗口的四周
  • 标题栏和状态栏作为菜单的推广,适用于上述表示方法
  • 缺陷说明
    • 欢迎反馈,mailto:[email protected]
    • 作者的首选语言是C#
    • 作者是软狗
    • 作者的IDE没装中文语言包,所以有的名词翻译得不准确:-(
    • 由于还没有厘清相关的证书问题,版权保留
    • 系列文章没有提出或解决新的问题,目的只是科普

正文

在Visual Studio(以下简称IDE)当中,存在两个很微妙的专用名词”项目(project)”和”解决方案(solution)”。这两个概念对于我们组织工作有怎样的启示呢?

首先,从目录结构的特点来认识Visual Studio。

当我们以空白环境启动IDE后,通过

[主窗口]/{文件}/{新建}/{项目}/,可以呼出[新建项目]窗口。

在[新建项目]窗口中任意选择一个项目模板,由于默认有

[新建项目]/{解决方案}=创建新的解决方案,

因此在完成新建项目后,在[解决方案资源管理器]中出现了一个解决方案内含有一个项目的情况。

此时,

[解决方案资源管理器]/{项目名}>>{在Windows资源管理器中打开}/,

可以看到这个项目具有独立的输出目录:bin目录,其中的Debug文件夹就是项目的输出目标。

回到主窗口,

[主窗口]/{新建项目}/得到[新建项目],

再建一个项目附加到当前解决方案,

[新建项目]/{解决方案}=添加到当前解决方案。

此时,观察目录结构是

    • 解决方案

      • 项目1

        • 项目1.csproj
        • bin
          • Debug
          • Release
      • 项目2
      • 解决方案.sln

很显然,这样的设计哲学呈现的是,项目代表了某种”单元”的东西。而解决方案就是这些”单元”的集合。请试着猜想,我们对项目的引用进行添加的时候,自动生成的信息到哪里去了?是’解决方案.sln’还是’项目1.csproj’?

我们可以把这种特性用来组织程序的编写工作。也就是把项目(project)作为可以复用的单元。这个单元比类高级,因为类实质就是文本文档。这个单元又比实际的应用程序低级,因为有一些项目它不产生新的.exe只产生新的.dll。其实这个等级恰恰就是常说的”模块化重用”中的模块。

第二,从项目的引用和输出来思考Visual Studio的组织

既然输出是指,使用Visual Studio所做实际工作对应的新增项。那么它可能是一个dll,也可能是一个.exe。总之,它一定是一个新增的单元。

可以提出一个简单的问题:一个项目可以对应几个引用项目?一个项目可以对应几个输出项目?一个引用项目可以对应几个项目?一个输出项目可以对应几个项目?实际上通过自己编写编译脚本,比如Makefile之类的东西,是可以精确掌握编译的过程。但是很显然,在Visual Studio当中没有要求强制写编译脚本。可以说,既然编译过程可以自动化,那么为什么不利用这个好处呢?

利用这个好处的结果就是对上面问题的一种解答方式:一个项目可以引用多个项目,一个项目就是输出一个项目(假如是Application模板,那就是一个.exe,类库就是一个dll),而一个项目可以被其他任意多个项目引用。

借助这样的模块化统一思想,可以更加科学地划分问题域,限制问题出现的范围,有效地形成复用。

最后,从他人的应用程序来猜测Visual Studio中的组织

以360安全卫士为例,360安全卫士很显然对应一个”解决方案”。其主界面可以对应于IDE中的一个桌面应用程序项目,模块化的实际功能就可以对应于IDE当中的类库项目。同样的理解,还可以应用于其他的应用程序。

对于应用程序的安装包打包,实际上就是IDE当中的特殊项目:部署。

总结

一个功能丰富的应用程序很难像”Hello,World!”这样简单。Visual Studio提供了自动化的项目管理方法论,在其中,解决方案面向总的问题域,项目则提供了模块化的实现方式,理解并遵守这种方法论或许不能避免造轮子,但可以一定程度上避免自己始终造同一个轮子。

时间: 2024-12-15 01:38:47

编程工作的组织--llorch的Visual Studio 基础教程(一)的相关文章

程序集--llorch的Visual Studio基础教程(终)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

断点调试--llorch的Visual Studio基础教程(三)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

源代码管理--llorch的Visual Studio基本教程(四)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

Llorch的Visual Studio基本教程(七)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

单元测试--llorch的Visual Studio 基础工具教程(二)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

源代码管理--llorch的Visual Studio基本教程(七)

本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名称]/{菜单名称}

Visual Studio Code 教程之————入门篇

Visual Studio代码是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,适用于Windows,macOS和Linux.它内置对JavaScript,TypeScript和Node.js的支持,并且具有丰富的其他语言(如C ++,C#,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统.

visual studio code教程:基础使用和自定义设置

一.界面介绍 1.1 界面介绍 1.2 文件夹和文件的打开 文件-->打开文件夹/打开文件 1.3 新建文件/文件夹 新建文件: a. 文件-->新建文件: b. 按Ctrl+n; c. 点文件夹名后面的+号图标. 新建文件夹: 点文件夹名后面的+号图标 1.4 拆分编辑器(分列) 快加键:Ctrl+\ 点击拆分编辑器图标(右上角)进行拆分编辑器.拆分完毕之后,可以通过鼠标点击拖动文件到相应的列.多列同时浏览免去多文件来回切换 1.5 集成终端 终端对开发者来说不可或缺,Visual Stud

Visual Studio Code教程

1.卸载干净.相关文件位置 卸载完毕后,要手删配置文件.缓存.下载的插件 Windows: 1.C:\Users\用户名\.vscode(即变量%userprofile%).存放插件,启动参数配置文件 2.C:\Users\用户名\AppData\Roaming\Code(即变量%appdata%).存放配置,缓存等文件 对应的是以下命令行参数 code --extensions-dir "/User/me/vscodeExtensions" --user-data-dir "