Dotnet Cli Publish命令无法修改web.config环境变量问题
Web.config Staging配置转换失效排查步骤
第一步:校验项目文件配置
编辑异常项目的.csproj文件,确认以下配置存在:<ItemGroup> <PackageReference Include="Microsoft.Web.Xdt" Version="3.1.0" /> <None Update="web.staging.config"> <DependentUpon>web.config</DependentUpon> <IsTransformFile>True</IsTransformFile> </None> <None Update="web.production.config"> <DependentUpon>web.config</DependentUpon> <IsTransformFile>True</IsTransformFile> </None> </ItemGroup>必须同时安装
Microsoft.Web.Xdt依赖包,且给每个环境的转换文件标记IsTransformFile=True,转换逻辑才会在发布时触发。第二步:校验转换文件语法
打开web.staging.config,确认根节点包含正确的XDT命名空间,且环境变量修改节点的转换规则正确:<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <system.webServer> <aspNetCore> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> </environmentVariables> </aspNetCore> </system.webServer> </configuration>缺失
xdt:Transform、xdt:Locator属性或者属性值写错,都会导致对应节点转换不生效。第三步:校验项目配置名称匹配度
打开项目属性→生成面板,确认下拉列表中存在Staging配置,且名称大小写和发布命令--configuration Staging完全一致,不要出现配置名是小写staging、命令里写大写Staging的不匹配情况。第四步:查看发布日志定位问题
执行带详细日志的发布命令:dotnet publish --configuration Staging -o D:\Websites\testwebsite -v d
搜索日志中是否存在Transforming web.config相关内容:- 没有相关日志:转换步骤未触发,回到第一步检查项目配置
- 有相关报错:按照报错信息修正转换文件的语法错误
第五步:清理缓存后重试
手动删除项目根目录下的bin、obj文件夹,再重新执行发布命令,旧缓存文件可能会导致转换逻辑被跳过。
内容的提问来源于stack exchange,提问作者Haseeb Khan
相关产品推荐
相关产品推荐

