Visual Studio是微软推出的一个.NET集成开发环境,主要用于为Windows系统开发应用程序,提供开发、调试和运行.NET平台应用程序的一站式服务。
首先从微软官网https://visualstudio.microsoft.com/zh-hans/downloads/下载Visual Studio(本书写作时最新版为Visual Studio 2022)的安装程序,如图1-1所示。
微软官网提供了3个不同的Visual Studio版本供用户自主选择,各版本之间的差异如表1-1所示。
表1-13个Visual Studio版本之间的差异
图1-1 Visual Studio 2022下载
❑ Visual Studio Community:适用于个人用户,对新手来说非常友好。该版本有相对完备的免费IDE,可用于开发Android、iOS、Windows和Web的应用程序。
❑ Visual Studio Professional:适用于中小规模的团队,该版本功能非常强大,具备社区版的所有优点。
❑ Visual Studio Enterprise:适用于企业级团队,该版本提供的专业开发者工具、服务和订阅非常丰富,相对于社区版来说,它可以保持高效率,在不同开发者团队之间进行无缝合作。
双击安装程序进入安装模式,根据引导完成安装。在安装向导“工作负荷”选项中列出了各种安装选项,这里勾选两个最常用的——“ASP.NET和Web开发”和“.NET桌面开发”,如图1-2所示。
图1-2 Visual Studio 2022安装(以企业版为例)
选择安装位置和组件,如图1-3所示。选择支持的工作组件越多,安装要求的空间越大。安装需要在一个剩余空间较大的磁盘上进行,这一操作可能需要较长的时间。安装完成后,需要重启计算机。
打开Visual Studio 2022,在窗口中单击右下角的“创建新项目”选项,如图1-4所示。
图1-3 选择安装位置和组件
图1-4 使用Visual Studio 2022创建新项目
在打开的“添加新项目”窗口中,从“所有语言”下拉列表中选择C#,从“所有平台”下拉列表中选择“Windows”,从“所有项目类型”下拉列表中选择“控制台”,最后选择“控制台应用(.NET Framework)”选项并单击“下一步”按钮,如图1-5所示。
在当前控制台“项目名称”处输入“Calculator4Book”,选择项目存储位置,然后单击“创建”按钮,如图1-6所示。
打开Calculator 4 Book项目,在Main方法中输入Console.WriteLine("hello world");,按F5键或单击工具栏中的启动按钮,在调试模式下运行默认程序,如图1-7所示。
右击项目,在弹出的下拉列表中选择“属性”命令,然后在“应用程序”页面中找到“目标框架”选项,可以看到当前项目的目标框架默认是.NET Framework 4.7.2,此处有多个版本可供选择,如图1-8所示。
图1-5 选择控制台应用
图1-6 为项目命名并选择存储位置
打开项目,在解决方案资源管理器中右击“引用”分类并在弹出的下拉列表中选择“添加引用”选项,弹出“引用管理器”对话框,在该对话框中可以选择添加.NET Framework类库中的组件或自定义的程序集文件等,如图1-9所示。
某些场景下,需要将本地文件上传到远程服务器,而远程服务器只提供了一个对外服务的上传接口,比如*.asmx,如果想通过客户端上传,则需要添加Web服务引用。此时,右击“引用”分类,选择“添加服务引用”选项,在弹出对话框的“地址”处输入要添加的Web服务地址,单击“确定”按钮,即可将指定的Web服务添加到当前项目,如图1-10所示。
图1-7 在调试模式下运行默认程序
图1-8 切换已安装的.NET Framework版本
图1-9 添加引用.NET Framework程序集文件
图1-10 添加We b服务引用
LINQPad是一款非常流行的开发工具,虽然听名字似乎它只能查询数据库、运行LINQ查询,但它其实是为开发人员提供的一种快速、交互式地查询和操作数据以及测试代码的环境。
使用LINQPad,开发人员可以轻松地创建LINQ查询,直接连接到各种数据源,如SQL Server、Oracle、SQLite、Excel等,以及测试C#和VB.NET代码。此外,LINQPad还提供了内置的NuGet包管理器和调试器,使代码的开发和调试变得更加容易和高效。由于易用性和强大的功能,LINQPad被广泛应用于.NET开发领域。
LINQPad的软件包很小,只有20MB左右,启动速度很快。使用时只需输入想要执行的C#语句并按下F5键即可。比如输入System.Diagnostics.Process.Start("calc"),运行后成功启动本地计算器进程,如图1-11所示。
按下F4键可以打开查询属性窗口。在这个窗口中,可以引用所有在运行时需要的文件,包括程序集文件、配置文件、JSON文件和文本文件等,这些引用的文件将会被复制到输出目录中,如图1-12所示。
LINQPad共支持C#、Visual Basic(以下简称VB)、SQL、F#这4种语言和10种查询类型,我们对C#、VB、F#这3种语言的相同查询类型做了合并处理,如表1-2所示。
图1-11 用LINQPad启动本地计算机进程
图1-12 设置查询属性
表1-2 LINQPad支持的语言和查询类型
LINQPad会根据输入的代码自动选择正确的查询类型,如图1-13所示,大部分时候我们无须担心。
LINQPad可以通过Entity Framework或Entity Framework Core及对应的数据库驱动连接至数据库,比如SQL Server、MySQL、Oracle、SQLite等,然后通过程序左上角的Add connection完成连接工作,如图1-14所示。
图1-13 LINQPad支持的查询类型
图1-14 LINQPad连接数据库
数据库连接配置完成之后,我们就可以选定这个连接,通过编写.NET代码实现对数据库的访问,代码如下所示。
以上代码通过Dump()方法向控制台返回输出结果,如图1-15所示。
除了可以通过执行Dump()方法看到运行结果以外,还可以切换至SQL标签页查看执行的SQL完整语句,如图1-16所示。
图1-15 查询数据库并显示结果
图1-16 SQL标签页显示完整语句
如果需要直接在LINQPad中执行SQL语句,只需将Language设置为SQL即可,如图1-17所示。
LINQPad的上手难度并不大,在https://www.linqpad.net/Resources.aspx上可以找到更多关于LINQPad的资源。另外,LINQPad本身也携带了大量的示例代码,切换到左下角的Samples选项卡即可看到,如图1-18所示。
在软件开发领域,.NET框架一直占据着重要地位,为开发者提供了广泛的工具和语言,用于构建各种类型的应用程序,从桌面应用到Web应用、移动应用和云服务。为了使.NET开发更加便捷,出现了许多在线工具和资源,下面介绍两个备受欢迎的网站。
图1-17 将Language设置为SQL
图1-18 LINQPad内置的学习示例
DotNetFiddle是一个在线的、互动式的.NET开发环境,允许开发者在线编写和运行.NET代码官方地址为https://dotnetfiddle.net。无论是学习C#编程、快速原型开发、问题排查还是分享知识,DotNetFiddle都提供了一个方便的平台,如图1-19所示。
SharpLab是一个在线.NET运行环境,用于帮助开发人员分析和可视化.NET编译后的IL(中间语言)代码。官方地址为https://sharplab.io/。这个工具提供了一个互动式的界面,开发人员能够向其中输入C#代码,然后查看相应的IL代码,以更好地理解C#代码的底层运行方式,如图1-20所示。
图1-19 DotNetFiddle在线运行.NET
图1-20 SharpLab在线运行.NET
SharpLab支持多种.NET语言,包括C#、VB和F#。这使开发人员能够查看不同版本中的IL代码,以确保代码在不同环境中的行为是一致的,如图1-21所示。
图1-21 SharpLab支持多种.NET语言(图示为VB)
.NET应用在Windows平台上通常部署于IIS Web服务器,通过IIS Web服务器监听来自客户端浏览器的请求。本节将介绍IIS的安装和基本用法。
本地环境是Windows 10操作系统,打开“Windows设置”,选择“应用”选项,或者在搜索框内输入“程序和功能”,选择“启用或关闭Windows功能”下拉选项,如图1-22所示。
图1-22 打开程序和功能设置
在“Windows功能”窗口中能够看到.NET Framework和Internet Information Services等节点信息。选择“万维网服务”和“IIS管理控制台”等需要安装的选项,单击“确定”按钮后稍等片刻即可完成安装,如图1-23所示。
安装完成后,在“开始”菜单的“Windows管理工具”目录下可看到IIS管理器,如图1-24所示。
图1-23 选择.NET运行必备的服务
图1-24 “开始”菜单处的IIS管理器
IIS安装完毕后,打开服务器管理界面可以看到默认有一个Default Web Site,可以保留或删除它。我们知道在IIS中,网站是构成服务的基本单元,一台IIS服务器可以同时托管多个不同的站点。右击站点,选择“添加网站”,弹出的界面如图1-25所示。
在“网站名称”字段输入MyNetSite,在“应用程序池”字段选择默认的DefaultAppPool,在“物理路径”字段选择网站的根目录,这里为“D:\Project\ProVisual\ProVisual\WebForm\WebForm”。为了不与默认的站点冲突,绑定端口为8097(所谓绑定,就是将一个指定的IP地址、端口和主机名对应到特定的站点)。创建站点成功后查看绑定的界面,如图1-26所示。
单击右侧的“浏览网站”,启动默认浏览器访问本机8097端口上的Web服务,如图1-27所示。
图1-25 IIS管理器添加网站
图1-26 IIS管理器网站的绑定设置
图1-27 IIS管理器启动浏览网站
正式部署之前需要确保IIS已经成功安装。由于IIS和.NET Core之间的对接由AspNetCoreModule提供支持,因此必须安装.NET Core Windows Server Hosting。
这里选择.NET Core运行时3.0作为实验环境。官方提供的AspNetCoreModule下载地址为https://dotnet.microsoft.com/zh-cn/download/dotnet/3.0,打开后选择“Hosting Bundle”,如图1-28所示。
图1-28 安装.NET Core运行时
安装完成后打开IIS管理器,在右侧内容版块视图中选择“模块”,如图1-29所示。
图1-29 IIS控制台模块功能
成功安装后单击“模块”,可看到一个名为AspNetCoreModuleV2的模块,如图1-30所示。
图1-30 AspNetCoreModuleV2模块
此处说明一下,AspNetCoreModuleV1是一个IIS模块,允许IIS运行.NET Core 1.x和2.x应用程序,而AspNetCoreModuleV2支持.NET Core 2.0及更高版本,如.NET Core 3.x、.NET Core 5等。
Visual Studio支持多种形态的应用发布,常用的有文件夹发布、Web服务器发布,还支持通过CLI命令行发布,如图1-31所示。
这里选择“文件夹”,单击“下一步”按钮,在弹出的窗口中单击“显示所有设置”,可设置目标框架、部署模式、目标运行时等,如图1-32所示。
图1-31 .NET Core应用发布
图1-32 .NET Core发布高级选项
这里的“目标运行时”表示安装.NET Core SDK的运行时版本,并不是当前操作系统的版本。默认Visual Studio将应用发布到当前项目bin\Release目录下,然后会根据目标框架版本自动生成netcoreapp3.0\publish目录,如图1-33所示。
图1-33 .NET Core部署发布后的目录和文件
我们创建了一个名为NetCore的站点,并将其物理路径指向项目发布后生成的publish目录,如图1-34所示。
此时,默认在应用程序池节点下自动创建与站点同名的NetCore应用程序池,双击打开“编辑应用程序池”对话框,在“.NET CLR版本”选项处选择“无托管代码”,“托管管道模式”保持默认的“集成”不变,如图1-35所示。
完成配置后,打开默认浏览首页,出现如图1-36所示的界面,表示.NET Core项目运行成功。
图1-34 创建站点指向发布的目录
图1-35 CLR设置无托管代码模式
图1-36 .NET Core项目运行成功
NuGet是由微软开发团队与.NET生态伙伴协力开发的程序安装平台,目的是简化安装第三方程序的过程。创建者可以通过将第三方程序打包发布到公有主机上供其他消费者使用,大大提高创建.NET应用的效率。NuGet平台与应用之间的关系如图1-37所示。
图1-37 NuGet平台与应用之间的关系
右击项目,选择“管理NuGet程序包”,然后在左侧选择“浏览”选项,输入Newtonsoft,搜索结果会出现于下方,单击进行安装,如图1-38所示。
图1-38 Visual Studio使用NuGet包管理器
安装完成后,程序会自动设置所需的配置,打开packages.config文件可以看到与Newtonsoft.Json相关的设置都已经加入,如图1-39所示。
从以上步骤可以看到,使用NuGet安装第三方程序是非常简单的,而NuGet经过多年的发展,现已收录超过25000个程序包,因此想要程序,通常只需打开NuGet搜索一下即可。
图1-39 packages.config包含项目引用的包信息
NuGet包除了使用在线安装方式外,也支持引入本地的包。比如ysoserial.net项目包含大量存在漏洞的开源组件包,我们在使用时可直接引入,无须再从官方寻找漏洞版本,如图1-40所示。
图1-40 ysoserial.net包含的第三方包
下面以SharpSerializer 3.0.1为例演示如何从本地导入NuGet包文件。首先打开Visual Studio找到NuGet包管理器,单击右侧设置按钮
添加程序包源,新增一个包源,默认名为Package source。选中新增包源后单击
按钮,浏览选择文件夹SharpSerializer.3.0.1,再单击“确定”按钮,这里可以修改这个程序包源的名称以便于区分,如图1-41所示。
回到NuGet主界面,在右侧“程序包源”处选择刚添加的Package source,即可显示引入的SharpSerializer包,如图1-42所示。
图1-41 NuGet管理器更新本地包
图1-42 NuGet管理器引入本地包