升级VS2017社区版后发布.NET Core 2.0应用到Azure App Service失败
我之前在升级VS2017社区版到15.6.3版本后,也碰到过和你完全一样的.NET Core 2.0 Web应用部署Azure App Service失败的问题,这个错误本质是升级后dotnet SDK的依赖解析逻辑变化,导致project.assets.json文件的目标框架信息不匹配。下面是几个亲测有效的修复步骤:
清理项目缓存并重新生成
先右键项目选择清理,然后手动删除项目根目录下的bin和obj文件夹(这两个文件夹是编译缓存,旧缓存很可能和新SDK不兼容),接着重新生成整个解决方案。这一步能让SDK重新生成完全匹配的project.assets.json文件。明确指定项目的SDK和运行时版本
VS2017 15.6.3默认会搭配.NET Core 2.1 SDK,但你的项目是基于2.0的,版本冲突是常见诱因。可以直接编辑项目的.csproj文件,明确指定目标框架和对应的运行时版本:<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> <!-- 指定匹配.NET Core 2.0的稳定运行时版本 --> <RuntimeFrameworkVersion>2.0.7</RuntimeFrameworkVersion> </PropertyGroup> </Project>保存后打开命令行,进入项目根目录执行
dotnet restore,让NuGet重新拉取适配的依赖包。重置发布配置文件
旧的.pubxml发布配置文件在VS升级后可能保留了过时的部署设置。建议先备份当前的发布配置,然后删除它,重新创建一个新的Azure App Service发布配置——创建过程中注意选择正确的目标框架为.NET Core 2.0,再尝试部署。同步Azure App Service的运行时设置
登录Azure门户,找到你的目标App Service,进入配置 -> 常规设置,确认.NET Core版本选项设置为2.0.x(不要选2.1或更高版本),保存设置后再重新部署项目。
额外提醒:如果以上步骤都没解决,可以尝试重启Visual Studio,有时候VS的进程缓存也会导致这类奇怪的依赖解析问题。
内容的提问来源于stack exchange,提问作者Ryan Spears

