提示:此文章是记录第三方开源WPF模板由net4.5升级到net6的详细过程

文章目录

前言

一、改造思路?

二、改造步骤

1.手动升级csproj项目文件

2.升级项目中使用到的第三方包

3.改造项目代码里面的Mvvm的模型代码


550c2c52-44af-41c0-abc1-d47f6d12718a

前言

被改造的开源项目:Azai: 一个测试git的wpf项目

改造后的开源项目:Azai: 使用NET6改造的WPF UI模板项目

一、改造思路?

1.手动升级csproj项目文件

2.升级或者替换项目中使用到的第三方包

二、改造步骤

1.手动升级csproj项目文件

代码如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net6.0-windows</TargetFramework><Nullable>enable</Nullable><UseWPF>true</UseWPF><PackageIcon>logo.ico</PackageIcon></PropertyGroup><ItemGroup><None Remove="Image\cov.png" /><None Remove="logo.ico" /></ItemGroup><ItemGroup><Content Include="Image\cov.png"><CopyToOutputDirectory>Always</CopyToOutputDirectory></Content><Content Include="logo.ico"><Pack>True</Pack><PackagePath>\</PackagePath><CopyToOutputDirectory>Always</CopyToOutputDirectory></Content></ItemGroup><ItemGroup><PackageReference Include="AduSkin" Version="1.1.1.9" /><PackageReference Include="CommunityToolkit.Mvvm" Version="8.0.0" /><PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" /></ItemGroup><ItemGroup><ProjectReference Include="..\ChromeTabs\ChromeTabs.csproj" /></ItemGroup><ItemGroup><Compile Update="Properties\Resources.resx"><DesignTimeSharedInput>True</DesignTimeSharedInput><AutoGen>True</AutoGen><DependentUpon>Resources.resx</DependentUpon></Compile></ItemGroup><ItemGroup><Compile Update="Properties\Resources.Designer.cs"><DesignTimeSharedInput>True</DesignTimeSharedInput><AutoGen>True</AutoGen><DependentUpon>Resources.resx</DependentUpon></Compile></ItemGroup><ItemGroup><None Update="Properties\Settings.settings"><Generator>SettingsSingleFileGenerator</Generator><LastGenOutput>Settings.Designer.cs</LastGenOutput></None></ItemGroup><ItemGroup><Compile Update="Properties\Settings.Designer.cs"><DesignTimeSharedInput>True</DesignTimeSharedInput><AutoGen>True</AutoGen><DependentUpon>Settings.settings</DependentUpon></Compile></ItemGroup><ItemGroup><None Update="Properties\Settings.settings"><Generator>SettingsSingleFileGenerator</Generator><LastGenOutput>Settings.Designer.cs</LastGenOutput></None></ItemGroup><ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'"><PackageReference Include="CommunityToolkit.Mvvm"><Version>8.0.0</Version></PackageReference><PackageReference Include="System.Management"><Version>6.0.0</Version></PackageReference></ItemGroup>
</Project>

2.升级项目中使用到的第三方包

老项目使用的第三方包:

<?xml version="1.0" encoding="utf-8"?>
<packages><package id="CommonServiceLocator" version="2.0.2" targetFramework="net45" /><package id="MvvmLight" version="5.4.1.1" targetFramework="net45" /><package id="MvvmLightLibs" version="5.4.1.1" targetFramework="net45" />
</packages>

CommonServiceLocator替换成微软官方的依赖注入组件【Microsoft.Extensions.DependencyInjection】。

MvvmLight和MvvmLightLibs由于nuget上的包一标记成弃用,所以使用新的包【CommunityToolkit.Mvvm】。

AduSkin包直接升级成最新版本的包,就可以了。

3.改造项目代码里面的Mvvm的模型代码

命名空间替换

using GalaSoft.MvvmLight

替换成

using CommunityToolkit.Mvvm.ComponentModel;

以前继承的模型父类由【ViewModelBase】改成【ObservableObject】;【Set】方法改成【SetProperty】。

详细代码如下:

//using GalaSoft.MvvmLight;
using CommunityToolkit.Mvvm.ComponentModel;
using System.Windows.Media;namespace AZai.ViewModel
{public abstract class TabBase : ObservableObject//ViewModelBase{private int _tabNumber;public int TabNumber{get => _tabNumber;set{if (_tabNumber != value){SetProperty(ref _tabNumber, value);}}}private string _tabName;public string TabName{get => _tabName;set{if (_tabName != value){SetProperty(ref _tabName, value);}}}private bool _isPinned;public bool IsPinned{get => _isPinned;set{if (_isPinned != value){SetProperty(ref _isPinned, value);}}}private ImageSource _tabIcon;public ImageSource TabIcon{get => _tabIcon;set{if (!Equals(_tabIcon, value)){SetProperty(ref _tabIcon, value);}}}}
}

以上就是升级Azai WPF项目到NET6的详细步骤,效果图如下:

改造一个NET4.5的WPF项目到NET6相关推荐

  1. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件--新建--项目--空项目,创建一个空项目. 第二步:添加引用,Presen ...

  2. prism项目搭建 wpf_Prism完成的一个WPF项目

    本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...

  3. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽 ...

  4. vs中如和根据项目生成类图_迁移WPF项目到.NET Core

    综述# .NET CORE 3.0开始,桌面端支持WPF了.很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性, ...

  5. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3

    将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3 原文:将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3 版权声明:本作 ...

  6. 从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)

    默认情况下,我们打包 NuGet 包时,目标项目安装我们的 NuGet 包会引用我们生成的库文件(dll).除此之外,我们也可以专门做 NuGet 工具包,还可以做 NuGet 源代码包.然而做源代码 ...

  7. 使用 DotNet CLI 创建自定义的 WPF 项目模板

    描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: Copy ...

  8. 艾伟:为WPF项目创建单元测试

    可能你已发现一个问题,我们无法使用VS对WPF项目创建单元测试(VS2005不行,VS2008我没试过,但据说也不行),这让人很郁闷,这里将介绍如何使用NUnit来对WPF项目创建单元测试并解决其中的 ...

  9. 带你开发一个完整的 node.js 项目

    「他们根本不知道,现在的电商大促有多么依赖 Node.js」任职阿里的架构师朋友这么说. 说真的,我倒并不意外.作为一个定位明确的高性能 Web 服务器,Node.js 非常火热,几乎霸占了前端生态. ...

最新文章

  1. 有关博弈人机混合智能的再思考
  2. C++类内存分布——深度理解继承与虚函数
  3. lucene、solr、nutch三者的关系
  4. Debian下搭建Samba CTDB集群。
  5. Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手
  6. steam成就解锁器_MC技术指南如何使用SAM成就解锁?
  7. matlab用解析法求二自由度阻尼系统的自由振动(先求系统状态方程
  8. 解决xlwt保存的xlsx文件无法打开的问题
  9. 4.c++模式设计-建造者模式
  10. 在树莓派3B+ 上使用YOLO v3 Tiny进行实时对象检测
  11. 经验3-5年的测试人,如果还是长期加班、薪资涨幅不大,建议认真看看
  12. 企业真实面试题总结(二)
  13. AGC022E Median Replace
  14. 谭浩强c语言程序设计笔记讲义,【笔记】谭浩强C语言程序设计--简明笔记
  15. PyQt环境的搭建:安装python+pyqt+eric
  16. MySQL笔记:第17章_其他数据库日志
  17. hive函数中的operators, UDF, UDAF, UDTF, PTF
  18. nSMS-企业级短信中间件介绍
  19. 第六章:纯策略纳什均衡
  20. VB中数组的嵌套循环

热门文章

  1. 图像光照校正处理(白平衡)及其速度优化 -opencv+python
  2. JS基础核心语法(1)
  3. Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)
  4. 使用capl和uds进行.bin文件的刷写
  5. navicat mysql 日志_使用Navicat查看MySQL日志的具体方法
  6. Uniswap V1 合约源码之保姆级解析
  7. Spring boot 启动报错:Unable to start web server
  8. 【python】脚本编写
  9. Jmeter安装及配置教程
  10. Open-falcon安装(Open-Falcon超级详细安装步骤)