VS2017中本地构建ASP.NET Core项目是否同时生成IIS Express与Kestrel?
嘿,这个问题问得很实在,我给你拆解清楚~
首先得明确:本地构建阶段本身不会直接生成IIS Express或Kestrel的专属文件,但项目的配置和依赖会默认包含两者的支持,具体细节如下:
启动配置默认同时包含两者
VS 2017创建的ASP.NET Core项目,会自动在Properties/launchSettings.json文件中配置两种启动选项:一个是IIS Express节点,另一个是项目名称对应的节点(直接用Kestrel启动)。这个文件是项目的一部分,构建后会保留,你可以直接编辑它调整两种启动方式的参数。Kestrel的依赖随构建输出
Kestrel是ASP.NET Core的内置跨平台服务器,它的核心依赖(比如Microsoft.AspNetCore.Server.Kestrel)已经默认包含在项目的NuGet引用里。本地构建时,这些依赖的dll会和你的项目编译产物(比如xxx.dll、xxx.pdb)一起输出到目标目录,但这不是“生成Kestrel内容”,而是它本身就是框架的一部分,构建只是把必要的依赖打包进来。IIS Express是VS自带组件,无需生成
IIS Express是Visual Studio自带的轻量级IIS服务器,不属于项目构建产物。当你选择用IIS Express启动项目时,VS会调用自身安装的IIS Express组件来托管你的应用,不需要项目构建时生成额外的专属文件。构建一次,两种启动方式都可用
不管你后续选择用IIS Express还是Kestrel启动,只需要构建一次就够了——因为必要的配置和依赖都已经准备齐全,启动时只是选择不同的宿主服务器而已。
内容的提问来源于stack exchange,提问作者Unknown developer

