前言:
而今我们对“aspnet35动态网站开发基础教程”大约比较看重,大家都想要知道一些“aspnet35动态网站开发基础教程”的相关内容。那么小编也在网摘上搜集了一些对于“aspnet35动态网站开发基础教程””的相关文章,希望我们能喜欢,咱们一起来了解一下吧!Update to .NET 8Intro
.NET 8 正式版发布已有一周多了,有些应用已经升级了 .NET 8,有些有依赖 Roslyn 的 package,最近才更新,所以有部分刚升级,分享一下升级到 .NET 8 的过程,相对比较简单,仅供参考
TargetFramework Update
首先要更新的就是项目文件里的 TargetFramework 为 net8.0,然后 .NET 相关的 package 更新到 8.0.0 版本,对于某些非常简单的应用来说可能就足够了,完~
项目较多把 TargetFramework 可以放在一个 Directory.Build.props 中,移除项目文件里的,这样可能更新一行代码就可以了
再看些复杂一些的
.NET 8 SDK 默认包含了 source link,所以之前项目里引用了 Microsoft.SourceLink.GitHub 升级之后可以去掉了,SDK 里默认包含了,.NET 8 里默认支持 source link,无需做任何改动
默认支持
GitHub or GitHub EnterpriseAzure Repos git repositories (formerly known as Visual Studio Team Services)GitLab 12.0+ (for older versions see GitLab settings)Bitbucket 4.7+ (for older versions see Bitbucket settings)
可以参考:
另外从 .NET 8 开始默认的 dotnet pack 和 dotnet publish 会使用 Release 模式,而非之前的 Debug 模式,对于之前手动指定 -c Release 的命令可以简化一下,可以不用指定,不过不更新也不会有问题~~
CI Update
目前用的 CI 主要是 Azure DevOps 和 Github Actions
Azure DevOps
- task: UseDotNet@2displayName: 'Use .NET sdk'
inputs:
packageType: sdk
- version: 7.0.x
+ version: 8.0.x
更新 SDK version 到 8.0.x 或者 8.x 可以自动获取最近的 .NET 8 的 SDK
Github Actions
- name: Setup .NET SDKuses: actions/setup-dotnet@v3
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
如果你的项目是多个 target framework 的,常见的是一些类库应用,可能是增加了 .NET 8 的 sdk,可以同时指定多个版本,示例如下:
- name: Setup .NET SDKContainer Updateuses: actions/setup-dotnet@v3
with:
dotnet-version: |
6.0.x
8.0.x
更新 docker image tag 为 8.0
- FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base+ FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
+ ENV ASPNETCORE_HTTP_PORTS=80
- FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env
+ FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
这里中间有一个 ASPNETCORE_HTTP_PORTS 环境变量的配置,因为 .NET 8 container 里默认的端口号变成了 8080,可以设置这一环境变量以保持使用 80 端口,这样可以不需要修改 k8s 里的 deployment 和 service 的端口配置
引入这一变化的原因在于,dotnet team 想要支持 non-root user,而 80 端口需要高级权限,所以默认端口号改成了 8080 普通用户也可以使用这一端口号,另外在 8.0 的 container 中引入了一个新的 user app 没有 root 权限
可以参考微软的 Dockerfile:
如果想要使用 8080 端口和 non-root user 的话,可以在 Dockerfile 中在 runtime image 中添加
USER app
即可启用 non-root user,需要注意的是如果启用 non-root user, 权限将会收紧,将无法在 container 里通过命令去安装新的 package
对于我们常用的一些工具如 curl 等如果需要建议在 Dockerfile 中增加一个 step 去安装
RUN apt-get update \&& apt-get install -y --no-install-recommends \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
USER app
另外就是前面提到的 container 的 port 变成了 8080,需要修改别的服务调用的地址或者 k8s resource 中 container port
如果是一个全新的服务,建议使用 8080 端口并且启用 app 用户,老的服务可以根据自己的需要进行调整
WPF Update
除了前面提到的框架版本和包版本的更新之外,在之前的版本中想要使用选择文件或者目录窗体的话在 WPF 中需要引用 Winform 的窗体,需要在项目文件中指定 <UseWindowsForms>true</UseWindowsForms> 并使用 System.Windows.Forms.FolderBrowserDialog 等
.NET 8 开始引入了 WPF 中的文件对话框,可以不再需要引用 winform 中的组件了
.NET 8 之前的代码如下:
var dialog = new System.Windows.Forms.FolderBrowserDialog{
Description = _localizer["ChooseDirTip"],
ShowNewFolderButton = true
};
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
return dialog.SelectedPath;
}
更新到 .NET 8 之后的代码如下:
var dialog = new OpenFolderDialog(){
Title = _localizer["ChooseDirTip"]
};
if (dialog.ShowDialog() == true)
{
return dialog.FolderName;
}
项目文件中的 <UseWindowsForms>true</UseWindowsForms> 也移除了,可以参考 commit:
More
你在升级 .NET 8 的过程中有没有遇到什么问题呢?一起来分享一下吧~~
References
标签: #aspnet35动态网站开发基础教程 #如何修改net的版本 #net如何升级 #net怎么升级 #aspnet弹出确定取消对话框