首页 > 编程知识 正文

dotnetcore 国产化(wpf和winform的区别)

时间:2023-05-04 07:51:37 阅读:78695 作者:1970

综述#

.NET CORE 3.0开始,桌面端支持WPF。 很多. NET FRAMEWORK项目都跑了一段时间,所以不太需要支持. NET CORE,但最近一个程序将项目更新到. NET CORE 3.1,以贯彻一些C# 8的特性

方法#

官方指导需要这样的步骤:

理解并更新NuGet的依赖关系。 升级NuGet以使用格式。 验证. NET Core或. net标准的顶级NuGet依赖关系的兼容性。 将NuGet软件包升级到新版本。 使用. net可移植分析器分析依赖关系。 将项目文件迁移到新的SDK样式格式。 选择是同时生成. NET Core和. NET Framework,还是仅支持. NET Core。 将相关项目文件中的属性和项目复制到新项目中。 修复问题:添加对Microsoft.windows.compatibility兼容软件包的引用。 找出并修正API-level的差异。 删除app.config中除appSettings和connectionStrings以外的部分。 如果需要,请重新生成自动生成的代码。 运行时测试:确保移植应用按预期运行。 请注意NotSupportedException异常。

升级nuget引用#

之前的nuget在packages.config中进行管理, netcore已经全面使用了PackageReference的格式,需要升级。

升级后将显示一个对话框。 全部选中,直接升级。 最后将显示升级报告。

搜索并运行

.NET Framework移植分析#

VS扩展市场. NET Portability Analyzer以分析项目。

分析结果显示

就像这样。 那么没关系。 请特别关注. NET CORE。 如果不支持,就需要考虑别的方法。

替换此引用/方法升级相应软件包

升级项目文件#

的最重要步骤已经到来,必须升级项目文件以支持. NET CORE。 实际上,步骤很简单,在vs中生成基于. NET CORE的WPF项目,然后将csproj文件直接复制到原始项目文件夹中,使用vs添加现有项目,选择该文件后,将自动添加原始项目

但是,某些项目不会自动处理,因此必须手动将原始csproj文件与新项目csproj文件进行匹配。 看看是不是缺少了什么。

PackageReference不会自动处理,也不能进行引用的其他项目。 必须手动粘贴。 资源也不会自动添加。 必须重新添加允许通配符语法的resource include=' images*.png ' /程序的图标。

编译后发生了此错误。

. NET CORE程序会自动基于项目的属性生成此信息,如果存在AssemblyInfo.cs文件,则会发生冲突。 二者择一解决这个问题

删除assemblyinfo.cs,但不能使用原始csproj文件。 将generateassemblyinfofalse/generate assemblyinfo添加到新项目文件中,并禁用自动生成功能。 根据

修复生成问题#

项目的不同,处理完成后可能会发生生成错误。 请考虑访问Microsoft.windows.compatibility以解决兼容性问题。

我的项目出现了很多警告,暗示项目package不兼容。

如果包继续维护,通常重新安装相应的包以解决这些问题。

复制更新-打包-重新安装

如果还不行的话,你的程序有可能不能正常运行。 如果你不想冒险,就需要寻找替代。 例如,我手头的程序引用了一个名为CookComputing.XmlRpcV2的软件包。 虽然不支持. NET CORE,但在网上搜索时,Kveer.XmlRPC是移植的,直接更换即可。

继续运行,一直提示资源文件错误,发现WPF的Properties.Resources很难使用.可以用几种方法解决。

删除resx文件,将生成属性设置为resource,使用Uri引用删除resx文件,将生成属性设置为嵌入式资源,使用统一资源引用删除resx文件,然后将生成属性设置为contennent

总结#

最后编译了。 这里只有几个警告。 没有错误。 考虑到程序正常运行,我有空再优化吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。