将ASP.NET Core 2.1预览版应用部署至Azure时遇Runtime相关错误
你遇到的问题核心是本地开发环境与Azure App Service的SDK/包源版本不匹配:VS 15.6 Preview 7对应的ASP.NET Core 2.1 SDK版本(大概率是2.1.300-preview2系列)需要的Microsoft.Build.Runtime包版本,比Azure上安装的Preview1扩展提供的版本更高,导致部署时NuGet无法找到对应包。
下面是几个针对性的解决方案,你可以按顺序尝试:
添加预览版NuGet源配置
预览版ASP.NET Core包通常不在默认NuGet.org源中,你需要在项目根目录创建NuGet.config文件,引入官方预览源,确保Azure部署时能获取到对应版本的包:<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> <add key="AspNetCore Dev Feed" value="https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" /> </packageSources> </configuration>将这个文件提交到Git仓库后重新推送部署,即可解决包找不到的问题。
更新Azure App Service的SDK扩展
你当前安装的Preview1扩展版本过旧,和本地VS 15.6 Preview7不兼容。登录Azure门户进入你的App Service,在「扩展」选项中卸载旧的Preview1扩展,然后安装对应2.1.300-preview2版本的ASP.NET Core预览扩展;如果找不到对应版本,也可以尝试在「配置」→「常规设置」里,直接将.NET Core版本切换到Azure提供的最新预览版。使用自包含部署模式
这种模式会把完整的.NET Core运行时和应用打包在一起,无需依赖Azure环境中的SDK。修改项目文件(.csproj)添加以下配置:<PropertyGroup> <SelfContained>true</SelfContained> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 若App Service是Linux计划,改为linux-x64 --> </PropertyGroup>重新提交代码部署后,Azure会部署包含运行时的完整包,彻底规避环境版本依赖问题。
另外,你可以通过App Service的「高级工具(Kudu)」查看详细部署日志,确认NuGet还原时是否访问了正确的源,帮助更精准定位问题。
内容的提问来源于stack exchange,提问作者Pedro Cabral

