改造一个NET4.5的WPF项目到NET6
提示:此文章是记录第三方开源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相关推荐
- 在VS中手工创建一个最简单的WPF程序
如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件--新建--项目--空项目,创建一个空项目. 第二步:添加引用,Presen ...
- prism项目搭建 wpf_Prism完成的一个WPF项目
本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...
- WPF入门教程系列(一) 创建你的第一个WPF项目
WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽 ...
- vs中如和根据项目生成类图_迁移WPF项目到.NET Core
综述# .NET CORE 3.0开始,桌面端支持WPF了.很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性, ...
- 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3 原文:将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3 版权声明:本作 ...
- 从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)
默认情况下,我们打包 NuGet 包时,目标项目安装我们的 NuGet 包会引用我们生成的库文件(dll).除此之外,我们也可以专门做 NuGet 工具包,还可以做 NuGet 源代码包.然而做源代码 ...
- 使用 DotNet CLI 创建自定义的 WPF 项目模板
描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: Copy ...
- 艾伟:为WPF项目创建单元测试
可能你已发现一个问题,我们无法使用VS对WPF项目创建单元测试(VS2005不行,VS2008我没试过,但据说也不行),这让人很郁闷,这里将介绍如何使用NUnit来对WPF项目创建单元测试并解决其中的 ...
- 带你开发一个完整的 node.js 项目
「他们根本不知道,现在的电商大促有多么依赖 Node.js」任职阿里的架构师朋友这么说. 说真的,我倒并不意外.作为一个定位明确的高性能 Web 服务器,Node.js 非常火热,几乎霸占了前端生态. ...
最新文章
- 有关博弈人机混合智能的再思考
- C++类内存分布——深度理解继承与虚函数
- lucene、solr、nutch三者的关系
- Debian下搭建Samba CTDB集群。
- Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手
- steam成就解锁器_MC技术指南如何使用SAM成就解锁?
- matlab用解析法求二自由度阻尼系统的自由振动(先求系统状态方程
- 解决xlwt保存的xlsx文件无法打开的问题
- 4.c++模式设计-建造者模式
- 在树莓派3B+ 上使用YOLO v3 Tiny进行实时对象检测
- 经验3-5年的测试人,如果还是长期加班、薪资涨幅不大,建议认真看看
- 企业真实面试题总结(二)
- AGC022E Median Replace
- 谭浩强c语言程序设计笔记讲义,【笔记】谭浩强C语言程序设计--简明笔记
- PyQt环境的搭建:安装python+pyqt+eric
- MySQL笔记:第17章_其他数据库日志
- hive函数中的operators, UDF, UDAF, UDTF, PTF
- nSMS-企业级短信中间件介绍
- 第六章:纯策略纳什均衡
- VB中数组的嵌套循环
热门文章
- 图像光照校正处理(白平衡)及其速度优化 -opencv+python
- JS基础核心语法(1)
- Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)
- 使用capl和uds进行.bin文件的刷写
- navicat mysql 日志_使用Navicat查看MySQL日志的具体方法
- Uniswap V1 合约源码之保姆级解析
- Spring boot 启动报错:Unable to start web server
- 【python】脚本编写
- Jmeter安装及配置教程
- Open-falcon安装(Open-Falcon超级详细安装步骤)