upgrade asp.net core mvc 7 to dotnet8
官方升级文档:
https://learn.microsoft.com/en-us/aspnet/core/migration/70-80?view=aspnetcore-8.0&tabs=visual-studio
8.0中全是关于Blazor
的改动,MVC部分已经很稳定了,没有breaking changes,完全没有需要改的地方。
升级dotnet sdk版本
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
升级PackageReference版本
运行以下命令查看依赖的最新版本
dotnet list package --outdated
Microsoft家都需要升级到8.x
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.0" />
手动修改.csproj
里面的Version
Dockerfile
修改base image
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine
为了容器运行在non-root权限下,有添加一个UID为1000的"app"用户。
RUN addgroup -g 1000 app && adduser -u 1000 -G app -D app
USER app
换到8.0的base image以后会报错,因为在base image默认添加UID为1654的"app"用户。
aspnet:8.0-alpine Dockerfile源文件
直接使用USER $APP_UID
也不行,挂载的volumes
会有权限问题。
最后解决方案是在docker-compose
添加user: "1000:1000"
让容器以UID 1000运行。
services:
app:
image: myimage
volumes:
- ./dbs:/dbs
user: "1000:1000"