此处仅仅针对 HandyControl<=3.2.0 Nuget
系列版本,其上版本将只包含中文语言包,其他语言包,通过
单独下载使用
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iN0E2MjJmM3EWO5MGO4EDZ0QWY3gDN5IDZ0YTYjJmYj9CX5IzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
问题场景
项目引入
HandyControl
进行客户端的开发,巴拉巴拉,看看官方文档-快速开始,引用
Nuget
包,引入全局样式,加个按钮,看看效果,运行调试
Nuget
引用:
App.xaml
内容:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Content="测试"></Button>
</Grid>
</Window>
调试效果如下:
看到
Debug
文件目录下,突然发现多个语言包,这是咋回事儿?
这些多余的语言包如何去掉,并不希望有这些多余的语言包包含在程序里,
原因分析
HandyControl
的项目源码中,为了兼容多语言实现国际化,实际加入了多个不同语言的语言版本包,默认支持的是
中文
,其他语言包都作为附属资源进行了内嵌,所以引入
Nuget
包,生成项目时,会自动生成对应的附属语言包
解决方式
以下是目前尝试过的几种方式
删除多余语言包(一)
每次发布或者生成之后,删除这些包就行,实际上本地默认为中文语言包,其他语言包主要是针对的多语言版本程序集,毕竟
HandyControl
也是跨国际的
WPF UI
库(笔者说的,切勿当真),删除语言包之后,实际程序集是能够正常运行
这个方式有关不好的地方就是,需要每次生成或者发布之后进行目录中删除多余语言包,操作比较重复,但是比较简单,初学者就能个处理,那如果是不想这样每一回都这样操作,还有其他方式否?有!自己写个脚本自动批量删除或者直接改
HandyControl
的项目源码
修改源码(二)
此处操作
是建立在源码已经能够
正常编译运行
和
发布
的情况下,如果源码还不知道如何编译的话,请查看笔者之前的文章
你听我说-HandyControl源码编译
,先确保源码能跑起来,再考虑修改
选择版本
找到项目中的需要的目标版本,
40
对应
Fx_4.0
版本,
45
Fx_4.5
及其以上版本,包括
Core
.Net5
,原始项目结构中语言包分布如下:
删除语言包
默认支持的语言包为
Lang.resx
,对应着中文语言包,此处以保留中文语言包为例,其他语言包删除,操作结果如下:
生成发布包
选择【解决方案配置】-中
Release
或者
Release-Net40
之后选择目标项目
HandyControl_Net_GE45
或
HandyControl_Net_40
,单击右键
重新生成
,生成结果如下:
依据需求,移除
nuget
包,选择对应目录下的
dll
,重新运行项目,
debug
目录如下: