如何为dotnet new自定义项目模板生成随机IIS端口?
自定义Web模板生成随机IIS Express端口的方法
官方模板里的固定端口(比如8080、44300)只是占位符,实际创建项目时,是由dotnet new命令的模板处理逻辑自动检测并替换为随机可用端口的。要让你的自定义模板实现同样效果,只需按以下步骤操作:
1. 在模板的launchSettings.json中保留占位符端口
在你的自定义模板的Properties/launchSettings.json里,像官方模板那样设置固定的占位端口:
"iisExpress": { "applicationUrl": "http://localhost:8080", //#if (HasHttpsProfile) "sslPort": 44300 //#else "sslPort": 0 //#endif }
注意:
//#if这类条件编译指令是模板引擎的语法,确保你的模板项目正确配置了对应的模板参数(比如HasHttpsProfile)。
2. 确保模板项目配置正确
你的自定义模板项目(.template.config/template.json)需要包含Web项目相关的配置,让dotnet new识别它为ASP.NET Core Web模板,这样端口替换逻辑才会生效:
- 确保
tags里包含web、aspnetcore这类标签 - 确保
identity中的group设置为Microsoft.AspNetCore(和官方模板一致)
示例template.json关键配置片段:
{ "author": "你的名字", "name": "自定义Web模板", "shortName": "myweb", "tags": { "language": "C#", "type": "project", "web": true, "aspnetcore": true }, "identity": { "group": "Microsoft.AspNetCore", "name": "MyCustomWebTemplate" } }
3. 测试模板
将模板安装到本地(dotnet new install .,路径为模板项目根目录),然后用dotnet new myweb创建项目,查看生成的launchSettings.json,就能看到自动替换后的随机端口了。
原理:ASP.NET Core的模板SDK在处理Web模板时,会自动扫描
launchSettings.json中的applicationUrl和sslPort,替换为系统中可用的随机端口(HTTP端口范围通常是49152-65535,HTTPS的SSL端口会选可用的443开头或其他合法端口)。
内容的提问来源于stack exchange,提问作者Luke Vo
相关产品推荐
相关产品推荐

