Visual Studio项目配置与launchSettings.json相关问题咨询
关于Visual Studio ASP.NET Core项目配置相关疑问的解答
一、生产环境配置疑问解答
1. Profile名称为解决方案名的问题
该Profile名称是自定义配置的,和一次性构建解决方案多个项目没有关联。默认创建基于Kestrel启动的配置时,VS会默认使用项目/解决方案名作为Profile名,你也可以随意修改为其他名称,不会对功能和构建逻辑产生任何影响,仅用于开发者识别不同启动配置。
2. 不同commandName选项的含义
Project:直接通过dotnet CLI启动项目,使用内置的Kestrel服务器托管,不会走IIS相关代理逻辑,你配置的applicationUrl就是Kestrel的监听地址,适合本地直接调试业务逻辑使用IIS/IIS Express:使用本地IIS服务或者轻量版IIS Express作为托管服务器,走IIS请求管道,适合需要模拟IIS托管环境的场景调试Docker:自动将项目打包为Docker容器后启动,适合调试容器化部署的相关场景Snapshot Debugger:用于生产环境快照调试,可在线上流量不中断的前提下抓取生产运行时的异常快照,一般仅用于排查线上问题Executable:启动一个外部可执行文件,一般用于调试依赖外部程序的场景,或者和非.NET程序联动调试
二、测试环境配置疑问解答
1. 跨项目加载配置的实现方案
可以实现跨项目加载配置,常用两种方案:
- 先将测试项目里的
appsettings.Testing.json的文件属性设置为「如果较新则复制」到输出目录,再在测试项目初始化WebApplicationBuilder时,手动指定加载测试项目输出目录下的配置文件即可:
builder.Configuration.AddJsonFile(Path.Combine(AppContext.BaseDirectory, "appsettings.Testing.json"), optional: false, reloadOnChange: true);
- 也可以将测试项目的配置文件设置为嵌入资源,调用
AddEmbeddedJsonFile方法加载,不需要额外配置文件复制逻辑。
2. 新建独立配置Profile的方法
不同Profile的配置是完全独立的,不会产生冲突。你直接在launchSettings.json的profiles节点下新增对应配置即可,示例如下:
"SebastiansCookbook-Testing": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Testing" }, "dotnetRunMessages": "true", "applicationUrl": "https://localhost:5002;http://localhost:5003" }
新增完成后,在VS的启动按钮下拉菜单中就能看到新增的Profile,不同Profile的环境变量、启动参数完全隔离,切换不同Profile即可切换对应运行环境。
内容的提问来源于stack exchange,提问作者Hervis Daubeny
相关产品推荐
相关产品推荐

