.NET Framework SDK风格项目发布时web.config被注入.NET Core元素
.NET Framework 4.8 SDK风格项目发布后web.config被注入.NET Core配置的问题
问题现象
将.NET Framework 4.8的SDK风格MVC项目通过文件夹发布配置文件发布后,发布目录中的web.config被自动注入了.NET Core相关配置,新增内容如下:
<system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\myApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" /> </system.webServer>
复现步骤
- 创建新的ASP.NET Web Application(.NET Framework),选择MVC模板
- 右键项目选择升级,将其转为SDK风格项目
- 修复缺失的引用,将项目类型从控制台改为类库
- 右键项目选择发布,创建文件夹发布配置文件
- 执行发布,对比项目与发布目录的
web.config,可发现后者包含.NET Core配置项
问题原因
SDK风格项目的发布流程采用了统一的Web配置转换逻辑,该逻辑未完全区分.NET Framework传统Web项目与ASP.NET Core项目的差异,会默认向Web项目的web.config中注入ASP.NET Core相关的配置片段。而非SDK风格项目使用的是传统发布流程,不会触发这套通用转换逻辑,因此不会出现该问题。
解决方法
在项目的.csproj文件的第一个<PropertyGroup>节点中添加以下配置,即可阻止该自动注入行为:
<IsWebConfigTransformDisabled>true</IsWebConfigTransformDisabled>
操作步骤:
- 右键项目,选择「编辑项目文件」
- 在文件最顶部的第一个
<PropertyGroup>标签内插入上述配置代码 - 保存文件后重新执行发布即可生效
内容的提问来源于stack exchange,提问作者AngryHacker
相关产品推荐
相关产品推荐

