如何将VS2019 Blazor ASP.NET Core托管模板部署到Azure?
解决Blazor ASP.NET Core托管模板自包含发布到App Service的错误
咱们先把问题根源理清楚:你碰到的这个错误,本质是Server项目依赖的Client项目没有生成对应.NETStandard,Version=v2.0的资产文件,大概率是包还原不完整,或者Client项目的目标框架配置出了问题。下面是一步步的解决办法:
1. 确认Client项目的目标框架配置
打开BlazorCore.Client.csproj文件,检查是否包含netstandard2.0作为目标框架,配置应该类似这样:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <!-- 其他项目配置 --> </PropertyGroup> <!-- 其他项目内容 --> </Project>
如果没有这个配置,直接添加或者修改成上面的内容后保存文件。
2. 重新执行NuGet包还原
在Visual Studio里,右键点击解决方案,选择还原NuGet包;或者在终端切换到解决方案根目录,执行命令:
dotnet restore
这一步会重新生成所有项目的project.assets.json文件,确保Server项目能找到Client项目匹配的目标框架资产。
3. 清理并重新生成整个解决方案
旧的编译缓存也可能导致这类问题,按以下步骤操作:
- 点击Visual Studio菜单栏的生成 -> 清理解决方案
- 接着点击生成 -> 重新生成解决方案
4. 检查自包含发布的配置细节
因为你是用**自包含(Self-Contained)**模式发布到App Service,要注意两个关键点:
- 确保发布时选择的目标框架和Server项目的目标框架一致(比如Server项目是.NET 6,发布时也要选对应版本)
- 在发布配置的部署模式里选自包含,同时指定正确的运行时(比如
win-x64,毕竟App Service的Windows环境大多是x64架构)
5. 手动清理缓存(如果前面步骤无效)
如果还是报错,直接删除BlazorCore.Client和BlazorCore.Server项目下的bin和obj目录,然后重新执行包还原和解决方案生成操作,彻底清除旧缓存。
最后提个小提醒:Blazor托管模板的发布,直接发布Server项目就好——它会自动打包Client的静态文件,单独发布Client反而容易出现依赖不匹配的问题。
内容的提问来源于stack exchange,提问作者punkouter
相关产品推荐
相关产品推荐

