.NET升级助手迁移后修改TargetFramework遇NETSDK1136错误求助
解决NETSDK1136错误:移除Windows目标框架后需指定Windows平台的问题
排查与修复步骤
1. 清理项目文件中的Windows专属配置
打开每个报错项目的.csproj文件,检查并调整以下配置:
- 移除或设置为
false:<UseWindowsForms>true</UseWindowsForms>、<UseWPF>true</UseWPF> - 删除
<TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>(如果存在) - 确保目标框架设置为纯跨平台版本:
<TargetFramework>net6.0</TargetFramework>或<TargetFramework>net7.0</TargetFramework>
2. 移除Windows专属依赖
- 在项目引用中删除
System.Web、System.Windows.Forms、PresentationFramework等仅Windows可用的程序集 - 检查NuGet包列表,替换或移除依赖Windows的第三方库,确保使用跨平台的ASP.NET Core兼容包
3. 修正ASP.NET MVC迁移残留配置
- 确认项目已完全迁移到ASP.NET Core MVC:引用
Microsoft.AspNetCore.Mvc而非旧版System.Web.Mvc - 将原
Web.config中的路由、认证、授权等配置迁移到appsettings.json和Program.cs中
4. 处理隐式RuntimeIdentifier依赖
若仍报错,检查项目文件是否存在<RuntimeIdentifier>或<RuntimeIdentifiers>配置:
- 若指定了
win-x64等Windows专属RID,改为跨平台RID(如linux-x64、osx-x64)或直接删除(让SDK自动适配) - 执行
dotnet clean和dotnet restore清理缓存并重新恢复依赖
5. 验证跨平台发布能力
本地执行跨平台发布命令验证兼容性:
dotnet publish -c Release -r linux-x64 --self-contained false
若发布成功,说明项目已具备云环境(如Linux容器、Azure App Service Linux)部署能力
内容的提问来源于stack exchange,提问作者Bang
相关产品推荐
相关产品推荐

