HueiFeng

Microsoft MVP

All Posts in 2020


【Azure DevOps系列】Azure DevOps EFCore命令式脚本部署到SQL数据库

构建迁移脚本 为了构建迁移脚本,我们将需要使用EF Tools for Command Line Interface。这些工具在Microsoft.EntityFrameworkCore.Tools提供。 迁移脚本 现在我们将通过 dotnet ef migrations script –p path to your csproj with migrations -o $(Build.ArtifactStagingDirectory)\migrations\scripts.sql –i来迁移我们的脚本,在如下代码片段中我将脚本进行迁移出来并且输出到指定的路径 -o $(Build.ArtifactStagingDirectory)/migrations/scripts.sql中, -i代表生成可用于任何迁移的数据库的脚本。 - task: CmdLine@2 …

Azure DevOps

探索.NET平台中的SIMD内在函数Vector

概述 Vector(向量)是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而Vector刚好弥补了这个缺陷,它的特征是相当于可分配拓展的数组(动态数组),它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。 什么是SIMD? SIMD是Single Instruction Multiple Data的缩写,通常中文译为单指令多数据流,通俗来讲的话是:对多个数据执行同一个CPU指令,以达到平行运算的目的. 在GPU之前我们会通过CPU来运行该项技术来增加图片的运算速度,例如Intel的MMX、SSE、SSE2、AVX,AMD的3DNow!等等,都是来使用SIMD 为基础的概念,在GPU技术突飞猛进的今天,CPU的SIMD技术很少用在了图片运算方面了,更多的是在资料库或者其他用途上。 SIMD 它适用于机器 …

.NET .NET5

Vs编译时RazorTagHelper - DOTNET_HOST_PATH is not set

今天听朋友说遇到一个问题,打开一个aspnetcore2.2的项目工程,发现挺有意思,缺少环境变量DOTNET_HOST_PATH file 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB4018 “RazorTagHelper”任务意外失败。 System.InvalidOperationException: DOTNET_HOST_PATH is not set 在 Microsoft.AspNetCore.Razor.Tasks.DotNetToolTask.get_DotNetPath() 在 Microsoft.AspNetCore.Razor.Tasks.DotNetToolTask.GenerateFullPathToTool() 在 Microsoft.Build.Utilities.ToolTask.ComputePathToTool() …

.NET Core

.NET必知的EventCounters性能指标监视器

在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具dotnet-counters而另一个是代码级别的EventListener. 使用dotnet-counters dotnet-counters是一个性能指标监视工具,用于临时运行状态监视和初级性能调查。它可以观察通过 EventCounter API发布的性能计数器值。例如,可以快速监视 CPU 使用情况或 .NET Core 应用程序中引发的异常率,以了解在使用 PerfView 或 dotnet-trace 深入调查更严重的性能问题之前是否有任何可疑操作。 -- 摘自 dotnet-counters 命令 dotnet-counters collect dotnet-counters list dotnet-counters monitor dotnet-counters ps 安装dotnet- …

.NET Core .NET .NET5

Azure Storage Account 误删恢复

登陆Azure站点,导航到新支持请求工作流程中 file 新建一个支持请求,信息可以按照如下这么去设置,当然要注意订阅账号别选择错 file 点击图中圈起来的链接“恢复删除的存储帐户” file 请选择已删除的帐户, 并且单击恢复。 file 恢复完成后,我们会看到一个通知success~,恢复成功 file

Azure

【Azure DevOps系列】Azure DevOps多阶段构建

对于阶段的流水线其实是特别有用的,我们可以将构建、测试、或者说部署分为多个阶段进行处理。将您的应用程序部署到多个环境中,并从一个环境逐步过渡到另一个环境。例如,可以在CI中运行单元测试后自动部署到Dev环境,然后部署到运行集成测试的Test环境,然后手动部署到Production。 管道任务 这是一个最基础的管道任务,它在Microsoft托管代理上运行,同时他它采用ubuntu-16.04虚拟机镜像,执行后将会输出Hello world pool: vmImage: 'ubuntu-16.04' steps: - bash: echo Hello world 当然我们可以对此进行修改成如下方式: jobs: - job: myJob timeoutInMinutes: 10 pool: vmImage: 'ubuntu-16.04' steps: - …

ASP.NET Core Azure DevOps

【Azure DevOps系列】Azure DevOps使用Docker将.NET应用程序部署在云服务器

Docker持续集成 本章我们要实现的是通过我们往代码仓库push代码后,我们将每次的push进行一次docker自动化打包发布到docker hub中,发布到之后我将进行部署环节,我们将通过ssh方式将我们的.NET应用程序pull并run到我们的云服务器上。 Dockerfile 如下所示: #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr. …

ASP.NET Core Azure DevOps Docker

【Azure DevOps系列】如何在Azure DevOps上构建Docker镜像(一)

创建Pipeline trigger: - master pool: vmImage: 'windows-latest' steps: - task: DotNetCoreCLI@2 inputs: command: 'restore' - task: DotNetCoreCLI@2 inputs: command: 'build' - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: true 通过如下任务从源文件夹存档文件,支持多种标准存档格式,包括.zip,.jar,.war,.ear,.tar,.7z等 - task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(Build. …

Azure DevOps Docker

在.NET中使用DiagnosticSource

前言 DiagnosticSource是一个非常有意思的且非常有用的API,对于这些API它们允许不同的库发送命名事件,并且它们也允许应用程序订阅这些事件并处理它们,它使我们的消费者可以在运行时动态发现数据源并且订阅与其相关的数据源。 DiagnosticSource在AspNetCore、EntityFrameworkCore、HttpClient、SqlClient中被使用,在我们实际的开发过程中他使我们能够进行拦截请求与响应的http请求、数据库查询、对HttpContext、DbConnection、DbCommand、HttpRequestMessageand等对象的访问,甚至说在需要的时候我们可以进行修改这些对象来处理我们的业务。 下面我们将通过如下的简单示例来了解它. DiagnosticSource和EventSource区别 DiagnosticSource和 …

.NET .NET5 Logging

【Azure DevOps系列】Azure DevOps构建并发布.NET5应用程序

Azure App Service 独立部署 在Azure App Service中我们可以通过独立部署进行部署我们的.NET5应用程序,因为它不会依赖目标系统上的环境,并且所有组件(包括librarys和运行时)都与该应用程序一起使用,并且与其他应用程序进行隔离,这样其实我们更好的去控制应用程序运行的版本。 1、选择要发布的项目,鼠标右键单击项目,然后选择发布,会出现如下内容: file 2、接下来我们可以选择Linux应用服务或Windows应用服务 file 3、最后我们点击完成后选择部署模式此处选择独立模式 file 接下来我们发布应用程序即可 框架依赖 目前在Azure App Service中并没有为我们提供默认的.net5运行时环境,那么我们如何以框架依赖的形式使用.net5呢?看如下步骤 1、点击左侧的扩展 file 2、选择.NET5运行时,如下图所示 file 这样我们 …

Azure DevOps .NET5

.NET Core开源导入导出库 Magicodes.IE 2.3发布

在2.3这一版本的更新中,我们迎来了众多的使用者、贡献者,在这个里程碑中我们也添加并修复了一些功能。对于新特点的功能我将在下面进行详细的描述,当然也欢迎更多的人可以加入进来,再或者也很期待大家来提issues或者PR,您的一个issue或者PR将是我们前进的动力。 file 公式导出 #88 公式导出目前已经在Excel模板导出中支持,我们可以通过如上代码片段的格式进行将公式应用到我们的Excel导出模板中. {{Formula::AVERAGE?params=G4:G6}} {{Formula::SUM?params=G4:G6G4}} 增加分栏、分sheet、追加rows导出 #74 在该版本中我们支持使用链式编程导出我们的Excel,从而起到追加分栏等作用。 在多个DTO导出中我们可以通过如下代码片段将我们的Excel分栏导出 exporter.Append(list1). …

.NET

【翻译】.NET 5 Release Candidate 1中的ASP.NET Core更新

.NET 5 Release Candidate(RC1)版本现在可以进行使用了,以下是发布的新功能: Blazor WebAssembly性能改进 Blazor组件虚拟化 Blazor WebAssembly预渲染 Blazor WebAssembly的浏览器兼容性分析器 Blazor JavaScript隔离和对象引用 Blazor文件输入支持 Blazor中的自定义验证类属性 Blazor对ontogle事件的支持 模型绑定DateTime为UTC 控制Startup类的激活 ASP.NET Core API项目中的默认开放式API规范(Swagger) ASP.NET Core API项目提供更好的F5体验 SignalR并行集线器调用 在SignalR Java客户端中添加了对Messagepack支持 Kestrel终端可进行特定的选项配置 Get started 如果要在. …

.NET5

【翻译】.NET 5 RC1发布

9月14日,.NET5发布了(Release Candidate)RC1版本,RC的意思是指我们可以进行使用,并且RC版本得到了支持,该版本很接近.NET5.0的最终版本,也是11月正式版本之前两个RC版本中的其中一个。目前,开发团队正在寻找在.NET5发布之前剩余的bug,当然他们也希望我们的反馈以帮助他们顺利的完成.NET5的开发计划。 开发团队在今天还发布了ASP.NET Core和EF Core的RC1版本。 现在我们可以进行下载用于Windows、macOS和Linux的.NET5 Installers and binaries Container images Snap installer Release notes Known issues GitHub issue tracker 如果要使用.NET5,我们需要使用最新的Visual Studio预览版(包括Visual …

.NET Core .NET5

【Azure DevOps系列】使ASP.NET Core应用程序托管到Azure Web App Service

使用Azure DevOps Project设置ASP.NET项目 file 我们需要先在Azure面板中创建一个Azure WebApp服务,此处步骤我将省略,然后点击部署中心如下图所示: file 此处我选择的是Azure Repos,当然大家也可以选择Github、Local Git、FTP file 我们需要提前在Azure DevOps中提前创建好应用程序,我这边已经提前创建好了名称为Blog . file 创建完后我们会在Azure DevOps Pipeline中看到默认为我们生成的管道信息,他是一个构建刚才那个应用程序并发布的过程。这个过程还是挺方便的,省去了我们一些的配置直接将这些给我们配置好,当然CD其实也配置好了,最终这个应用程序会发布到我们在在这之前创建的Azure WebApp中。 file file 通过如下该图我们可以看到已经可以访问通了,虽然 为错误页面其实 …

ASP.NET Core Azure DevOps

【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包

在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程。 file 前面我创建了一个非常简单的类库,这边我不做过多叙述,接下来我们需要进行编辑csproj文件,当我们创建Nuget包时,我们将使用dotnet pack命令。这于传统的Nuget cli稍微有点不同,在传统的Nuget CLI中,我们创建nuspec文件并针对nuspec运行nuget pack。dotnet pack命令将从csproj创建一个nuspec文件,然后将代码打包到一个nupkg文件中,需要将一些关键信息添加到csproj文件中,以确保它可以正确的创建Nuget包。首先我们需要一个PackageId,这将是Nuget包本身的名称,根据我们要发布的位置这个名称必须是唯一的,接下来是Version,它将是已发布的软件 …

.NET Core Azure DevOps NuGet

【Azure DevOps系列】Azure DevOps生成代码覆盖率

前言 在做单元测试时,代码覆盖率可以作为我们衡量代码质量的一个指标,本章我们将使用Azure DevOps帮助我们生成代码覆盖率的结果.Azure DevOps构建管道还是具有代码覆盖率选项的,在Visual Studio测试平台在已经集成了Coverlet格式的数据收集器,它其实并不难,它是可以开箱即用的。获取Coverlet格式报告几乎都是可以拿命令行参数去解决的。 在单元测试项目中需要引入nuget包coverlet.collector,当然只需要在单元测试项目中引用他,下面这个代码片段是单元测试模板自动生成的,我只是引入了一个我自己的类库。 Project Sdk=Microsoft.NET.Sdk PropertyGroup TargetFrameworknetcoreapp3.1/TargetFramework IsPackablefalse/ …

.NET Core Azure DevOps

【翻译】.NET 5 Preview8发布

今天,.NET 5预览8发布了,对于.NET5.0的功能开发已经完成了,这必须要排除待处理的bug,预览8是最后一次预览版本。预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本,这篇文章描述了.NET5.0版本中的一系列功能。<br />You can download .NET 5.0, for Windows, macOS, and Linux: Installers and binaries Container images Snap installer Release notes Known issues GitHub issue tracker 今天同时也发布了ASP.NET Core 和 EF Core 。<br />要使用.NET5我们需要最新版本的 Visual Studio (包括 Visual Studio for Mac) 才能使用 .NET 5 …

.NET Core .NET5

【Azure DevOps系列】开始第一个Azure DevOps应用

前言 在上一章中对Azure DevOps做了一个简单介绍,本章我们将开始我们的Azure DevOps. file 开启第一个DevOps应用 我们需要先从Azure DevOps这边进行注册相关账号。 注册账号打开Azure Pipelines,点击免费使用 azure pipelines 点击后进行注册或者登录Microsoft账号 创建项目 根据我们刚才创建的组织,然后访问组织页面进行创建项目 https://dev.azure.com/{yourorganization} 输入项目名称、输入项目描述以及选择项目可见程度即可 create project 创建完后我们会被重定向到如下页面 image 点击GitHub,点击后对Github仓库做一下授权即可,然后选择项目 进行选择一个默认模板配置,下面我选择ASP.NET Core image 点击后能看到为我们默认创建的YAML文 …

ASP.NET Core Azure DevOps

Using ABP vNext to Develop an Address Book Application in 5 Minutes

Using ABP vNext to Develop an Address Book Application in 5 Minutes ABP vNext framework (hereinafter called "ABP") is an artwork-level application development framework designed by Volosoft. It is based on Domain-Driven-Design (DDD) and innovatively adopts modular development design. ABP is undoubtedly the most advanced and elegant existence in ASP.NET Core development frameworks. I believe that …

.NET Core ABP VNext EasyAbp

.NET Core SameSite cookie问题

异常提示 This setcookie was blocked because it had the "samesite=none" attribute but did not have the "secure" attribute, which is required in order to use "same=none" SameSite SameSite 有3个可选值 : Strict 禁止第三方 cookie Lax None 关闭 SameSite 选项. 其实在谷歌升级后呢,默认限制了跨域携带cookie给后端,在使用samesite=none后其实不仅仅如此,我们还需要设置Secure属性才可以生效,但是对于项目中有些不可告人的秘密,哈哈哈哈哈,所以此处不从项目中修改了我们将修Nginx服务器来解决SameSite的问题。 Nginx proxy_cookie_path 具体 …

ASP.NET Core .NET Nginx

【Azure DevOps系列】什么是Azure DevOps

DevOps file DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化,它促进开发和运营团队之间的协作,以自动化和可重复的方式更快地将代码部署到生产中。 DevOps有助于提高组织提供应用程序和服务的速度。它使组织能够更好地为客户服务,并在市场中更有竞争力。 简而言之,DevOps可以定义为开发和IT运营的一致性,以及更好的沟通和协作。 Azure DevOps file Azure DevOps其实是VSTS(Visual Studio Team Service)更名后的名字。而VSTS是TFS(Team Foundation Server)的在线版本。所以Azure DevOps可以理解为是放在Azure云上的TFS,当然我们既可以使用在Azure云平台托管的服务(Azure DevOps Service),它可以是弹性可伸缩的,具有 …

Azure DevOps

ASP.Net Core 使用HttpClientFactory Polly实现熔断降级

前言 在NET Core2.1后也是增加更新了很多东西,当然HttpClientFactory更新中的一部分.虽然说HttpClient这个实现了disposable,但使用它的时候用using包装块的方式通常不是最好的选择。处理HttpClient,底层socket套接字不会立即释放。该HttpClient类是未多个请求重复使用而创建的。需要不同的基地址,不同的HTTP 标头和其他对请求个性化操作的场景时,需要动手管理多个HttpClient实例,为了简化HttpClient实例管理,.NET Core 2.1提供了一个新的HTTPClientFactory - 它可以创建,缓存和处理HttpClient实例。 什么是HttpClientFactory 从ASPNET Core开始,Polly与IHttpClientFastory集成。HttpClientFastory是一个简化管理和使 …

.NET Core ASP.NET Core HttpClient