1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 开发者工具 Visual Studio代码中的.NET核心应用程序开发

开发者工具 Visual Studio代码中的.NET核心应用程序开发

时间:2021-01-27 20:33:15

相关推荐

开发者工具 Visual Studio代码中的.NET核心应用程序开发

官方C#扩展允许开发人员从一开始就使用Visual Studio Code作为.NET Core项目的轻量级编辑器。通过社区成员创建的许多其他扩展,.NET Core开发变得更加轻松和愉快。

在本文中,我将检查其中一些扩展并帮助您配置Visual Studio代码以使这些扩展协同工作。如果您不熟悉Visual Studio Code,可以从我之前的文章Visual Studio Condensed中了解更多相关信息。

本教程来自DotNetCurry(DNC)杂志,其中包含.NET和JavaScript 的深入教程和最佳实践。本杂志面向开发人员,架构师和技术经理,涵盖C#,模式,.NET核心,MVC,Azure,DevOps,ALM,TypeScript,Angular,React等。免费订阅此杂志并在您的收件箱中接收所有以前,当前和即将推出的版本。没有垃圾邮件政策。

适用于.NET Core的Visual Studio代码

操作项目和代码文件

如果您已经习惯了Visual Studio(VS ,等),那么当您尝试在Visual Studio Code(即VS Code)中打开.NET Core解决方案时,解决方案资源管理器窗口可能是您首先想到的。

Visual Studio中的解决方案资源管理器将解决方案中的项目呈现为树视图。此视图包含各个源代码文件。它还包含虚拟节点以及有关项目的其他重要信息,例如对NuGet包的引用以及存储在项目文件中的其他项目。

图1:Visual Studio 中的解决方案资源管理器

Visual Studio代码围绕文件夹而不是解决方案文件。它的主要导航工具是Explorer视图,它列出了当前打开的根文件夹的所有文件和子文件夹。在典型的.NET Core解决方案中,其所有项目都在同一个解决方案文件夹中。这个简单的文件列表不提供与Visual Studio中的解决方案资源管理器相同的信息级别。

图2:Visual Studio Code Explorer视图中的.NET Core解决方案文件夹

幸运的是,有一个可用的扩展可以帮助。

如果在Visual Studio Code的副本中安装vscode-solution-explorer扩展,它将向其添加解决方案资源管理器视图。

它不是Visual Studio Solution Explorer的完全功能等同物,但它遵循从解决方案和项目文件中读取信息的相同概念,并在解决方案及其项目作为主节点的树视图中呈现它。

图3:Visual Studio代码中的解决方案资源管理器视图

扩展不仅以不同的方式显示解决方案,还添加了用于创建解决方案,项目和代码文件的上下文菜单命令。您可以使用这些命令,而不是直接从终端运行dotnet命令:

- 要在Visual Studio代码中打开空文件夹时创建新解决方案,请通过单击“解决方案资源管理器”窗格中的“ 找不到解决方案”文本或从“命令”选项板调用它来调用“ 创建新的空解决方案”命令。输入名称后,将通过执行以下dotnet命令创建解决方案:

创建解决方案后,扩展程序将鼓励您创建模板文件夹。

如果您批准该请求,它将为您创建.vscode / solution-explorer文件夹。在它内部,扩展将放置一个与其一起分发的特殊模板文件的集合。

当您通过扩展创建新的代码文件时(如本文后面所述),其中一个模板将用作新文件的起始内容。与Visual Studio Code本身放在.vscode文件夹中的其他文件(例如,启动配置的launch.json和带工作区设置的settings.json)一起,确保在源代码管理中包含创建的模板文件夹。

图4:创建模板文件夹的通知

每次打开包含解决方案文件的文件夹时,都会显示相同的请求,该文件还没有创建模板文件的.vscode / solution-explorer文件夹。

- 现在,您可以在解决方案资源管理器中右键单击解决方案节点,然后调用“ 添加新项目”命令。它将列出dotnet命令提供的模板。

图5:可用项目模板列表

选择语言(C#,F#或VB)并输入名称后,它将再次执行带有与您的选择对应的参数的dotnet命令:

- 现在可以通过右键单击项目或其中的文件夹并调用“ 创建文件”命令来创建新文件。您需要输入文件名(包括其扩展名,例如.cs),然后选择之前在.vscode / solution-explorer文件夹中创建的模板之一。

图6:可用文件模板列表

只要在编辑器中打开第一个C#代码文件,C#扩展就会为您的项目生成构建任务和启动配置。

图7:用于创建构建和调试资产的通知

这些任务允许您使用标准的Ctrl + Shift + B键盘快捷键快速构建项目,更重要的是使用F5键盘快捷键运行和调试项目。

与Visual Studio(VS)类似,它将启动应用程序。如果是Web应用程序,它还将在默认浏览器中打开起始页面。它会自动将调试器附加到.NET Core应用程序进程。执行将在您放置在代码中的断点处停止,允许您查看当前的程序状态。

图8:调试.NET Core应用程序

使用单元测试

单元测试是软件开发的重要部分。

可以按照与创建应用程序项目时相同的步骤在解决方案文件夹中创建测试项目。您只需选择正确的项目模板(单元测试项目或xUnit测试项目,具体取决于您要使用的测试框架)。

创建测试项目后,可以使用项目上下文菜单中的Solution Explorer Add reference命令从中引用应用程序项目。只有解决方案中的两个项目,应用程序项目将自动添加为参考。如果有更多项目,则必须从列表中选择一个。

图9:Solution Explorer视图中的项目引用

要简化运行单元测试和查看结果,您应该安装另一个扩展.NET Core Test Explorer。

它提供了几个与测试相关的功能:

- 一个类似于Visual Studio中的测试资源管理器的新侧栏视图(因此名称)和活动栏中的相应图标(即带有不同侧栏视图图标的垂直栏)来访问它。

图10:.NET Test Explorer侧栏视图

它列出了树视图中的所有测试,按命名空间和类分组,以及最新测试运行的结果。可以使用其上下文菜单中的“ 转到测试”命令导航每个测试。测试可以在每个层次结构级别从此处运行:单独,按类,按名称空间或全部。

- 其代码镜头中每种测试方法的最新测试结果。

图11:代码镜头中的测试结果

还有一个命令用于运行和调试添加到Code Lens的各个测试。后者对于排除故障测试非常有用。

- 失败的测试列为包含它们的文件的问题。

图12:将测试失败视为问题

该扩展目前仅支持在Visual Studio Code中打开的文件夹中的单个测试项目。如果在自动发现期间找到多个,则所有功能将无法正常工作。

GitHub中存在一个未解决的问题,即为多个测试项目添加适当的支持。在解决之前,可以通过将测试项目的路径指定为工作空间设置来部分解决问题。

为此,请通过“ 文件”>“首选项”>“设置”菜单项打开设置编辑器,单击“ 工作区设置”选项卡并添加以下行:

这不会使扩展适用于多个测试项目,但会将其限制为仅处理给定文件夹内的测试项目。只要该文件夹中只有一个测试项目,该扩展将与该测试项目一起正常运行,并忽略解决方案中的任何其他测试项目。

这样您就可以将它与一个测试项目一起使用,而不是根本不使用它。

持续测试

在我之前的文章“ .NET中的连续测试”中,我描述了如何使用命令行工具配置.NET Core的连续测试。虽然.NET Core Test Explorer扩展具有一些内置支持连续测试,即任何源文件更改时自动运行测试,但它仍然依赖于相同的命令行工具。

因此,要使其正常工作,首先需要将工具引用添加到测试项目中。您可以从“解决方案资源管理器”视图的上下文菜单中打开测试项目文件。必须在已包含其他PackageReference和DotNetCliToolReference元素的ItemGroup元素中添加以下行:

这将使dotnet watch命令可用于扩展。要在扩展中启用连续测试自动监视模式,还需要将以下条目添加到工作区设置:

更改设置后,您需要通过单击侧栏视图右上角的“ 刷新”按钮重新初始化扩展。一旦它发现项目中的测试,它将启动dotnet watch命令行工具来监视更改并在检测到更改时自动重新运行测试。

代码覆盖率

最近,发布了一个名为Coverlet的 .NET Core代码覆盖库。通过从测试项目中引用它,代码覆盖率结果也可以显示在Visual Studio代码中。

首先,您需要将coverlet.msbuild NuGet包添加到测试项目中。您可以使用Solution Explorer上下文菜单中的Add package命令。

要在测试运行期间计算代码覆盖率,您需要在命令行中添加其他参数,用于运行测试。

不幸的是,截至目前,您无法更改Test Explorer扩展程序用于运行测试的命令。但是,如果扩展名将输出到扩展程序本身使用的同一文件,则扩展程序仍会显示并显示测试结果。

这允许我们使用Visual Studio Code任务使用所需的命令行参数运行测试,并让测试资源管理器仍然接收并显示结果。

我们来配置吧。

如果在扩展开始观察更改后查看Visual Studio代码输出窗口中的测试资源管理器输出,则可以找到已执行的命令,例如:

如您所见,结果文件放在临时文件夹中。您可以通过配置工作区设置来更改它:

该文件夹必须在运行命令之前存在,否则将失败。虽然扩展程序会将设置考虑在内,但遗憾的是仍会在指定的文件夹中创建一个临时文件夹,每次重新启动Visual Studio代码时都会更改该文件夹:

您仍然可以在.vscode / tasks.json中配置一个连续运行测试的任务,该任务将运行上述命令,但需要使用Coverlet所需的其他参数:

除了启用Coverlet之外,新添加的参数还指定了其输出格式和结果文件,以便Visual Studio代码扩展能够读取它。该组属性用于使此任务默认任务在Visual Studio代码,以便它可以通过运行运行测试任务的命令。

若要在Visual Studio代码中显示代码覆盖率信息,请安装Coverage Gutters扩展。如果覆盖信息以其支持的格式之一可用,它可以使用任何语言的文件。

通过任务配置的最新更改,将在每次测试运行时在测试项目文件夹中生成lcov.info文件。您可以通过单击状态栏左侧的“ 监视”按钮来启用Coverage Gutters扩展来监视该文件。

图13:状态栏中的Coverage Gutters Watch按钮

这将导致覆盖信息在代码编辑器窗口中自动刷新,因为测试在后台持续运行。

图14:代码编辑器窗口中的代码覆盖率信息

您仍然需要在tasks.json中运行一次任务以启动观察程序。由于此任务被配置为默认测试任务,因此可以使用Visual Studio Code中的特殊任务:运行测试任务命令来调用它。由于没有为此命令配置开箱即用的快捷方式,并且它未包含在任何菜单中,因此您只能从命令调色板中调用它。

若要使其更易于访问,可以通过将以下内容添加到键盘快捷方式文件keybindings.json,为其提供与Visual Studio中相同的快捷方式:

从现在开始保存其中一个文件时,测试将自动重新运行。要停止观察者,您需要调用Tasks:Terminate Task命令。它也没有默认配置的快捷方式。

在使用您自己的任务时禁用Test Explorer自动监视模式也是一个好主意,以避免运行测试两次并防止因此而发生的任何冲突。

构建任务中结果文件的路径需要在每次重新启动Visual Studio Code时进行修改,这使得此解决方案不太理想,但它仍然是我能够使用当前可用工具的最佳方法。

部署到Azure

Microsoft Azure是Microsoft的云计算平台。它提供的众多服务之一是Azure App Service,可用于托管Web应用程序。

Web应用程序部署通常作为持续部署配置的一部分在构建服务器上进行。但是,出于测试目的,您有时可能希望手动部署应用程序。如果您的部署目标是Azure App Service,则 Visual Studio Code 的Azure App Service扩展可能会很有用。

安装后,它会在活动栏中添加自己的侧栏视图和相应的图标。

在您能够使用它之前,您需要使用Azure帐户扩展提供的标准接口登录Azure帐户,该扩展会自动作为扩展依赖项安装。单击Azure App Service侧栏视图中的“ 登录到Azure ...”按钮将打开包含简短说明的通知。

图15:Azure帐户扩展登录通知

该按钮将打开一个网页,您将粘贴所提供的代码并登录到您选择的Azure帐户。完成此操作后,您将能够浏览您可以访问的Azure应用程序服务,按订阅分组。

图16:Visual Studio代码中的Azure App Service树视图

Azure App Service扩展功能主要侧重于Node.js应用程序的部署,但如果使用正确,它还可用于部署 Core Web应用程序。

由于扩展程序不了解解决方案和项目结构,因此您首先需要为要部署的项目创建发布文件夹。您可以使用“ 解决方案资源管理器”上下文菜单中的“ 发布”命令。

该文件夹的路径通常是项目文件夹中的bin / Debug / netcoreapp2.0 / publish子文件夹,但在命令完成后,它也将在Visual Studio Code Output窗口的Solution Explorer输出结尾处列出。

现在,您可以通过单击侧栏视图右上角的“ 部署到Web应用程序”按钮来启动扩展的部署向导。按照其步骤,您将输入所有必需的信息:

发布文件夹的路径(单击下拉列表中的“ 浏览”选项以选择文件夹),Azure订阅,网络应用程序(您可以选择现有的或创建一个新的)网络应用名称(仅在创建新的网络应用时),资源组(仅在创建新的Web应用程序时,您可以选择现有的应用程序或创建新的应用程序),资源组名称(仅在创建新资源组时),操作系统(仅在创建新的Web应用程序时),应用服务计划(仅在创建新的Web应用程序时,您可以选择现有的应用程序或创建新的应用程序),应用服务计划名称(仅在创建新计划时),定价层(仅在创建新计划时,才会列出可用层的子集,您需要在门户中创建应用服务计划以使所有层都可用),位置(仅在创建新计划时)。

完成向导后,将首先创建任何新创建的Azure资源。然后,所选文件夹的内容将部署到目标Azure应用程序服务。

该过程完成后,该URL将列在Visual Studio代码输出窗口中Azure App Service输出的末尾。如果按住Ctrl键单击它,则应在默认浏览器中打开正在运行的Web应用程序。

如果没有,您可以通过将以下设置添加到设置编辑器的“用户设置”选项卡,将“ 文件”节点添加到Azure应用程序服务树视图以进行基本故障排除:

通过扩展应用程序服务的节点,您现在将看到上载到Azure的文件,如果您在树视图中选择它们,甚至可以在编辑器中浏览它们的内容。

树视图上下文菜单中还有其他命令可用,例如重新启动或停止服务甚至删除它。如果您在Azure帐户中运行生产服务,请务必小心使用它们。

结论:

按照本文中的说明,您可以将Visual Studio Code的免费副本配置为.NET Core开发的便捷工具。

当然,它不像Visual Studio 那样功能丰富,但它更轻巧,不仅限于Windows,甚至更便宜。此外,从过去两年中Visual Studio Code本身的扩展和增强功能的改进来看,我们可以期待.NET Core开发经验在未来继续改进。

本文由Yacoub Massad进行技术评审。

别人在读什么!

使用SqlLocalDB Visual Studio 简化CRUD应用程序的集成测试- 在Visual Studio 中使用Bitbucket for Git在Visual Studio 中进行 单元 测试使用Visual Studio 进行NUnit测试 Visual Studio Code(VS Code)Condensed

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。