Warning:这种方法能保证运行初始项目,但至于有没有什么其他问题我就不知道了,根据Avalonia官网的说法,Avalonia基于.NET Standard 2.0构建,该标准涵盖从.NET Framework 4.6.2直至.NET 9。

根据社区讨论,预期在Avalonia 12将终止对.NET Standard 2.0的支持,见https://github.com/AvaloniaUI/Avalonia/discussions/18606

Avalonia版本:11.3

.NET Framework 4.8

本文地址:https://www.cnblogs.com/oberon-zjt0806/p/18984823

首先按照一般流程创建Avalonia (Mvvm)项目,在默认状态下,Avalonia将使用.NET 8.0,直接编辑项目文件,修改目标平台<TargetPlatform>net4.8

然而,Avalonia中用到了相当多的新版本语言特性,.NET Framework 4.8官方最大支持为C# 7.3,Nullable引用类型是不支持的。于是通过<LangVersion>修改语言版本为8.0(如果项目文件里没有,则在<PropertyGroup>中手动添加)。修改完的项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net4.8</TargetFramework> <!--Modified-->
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<LangVersion>8.0</LangVersion> <!--Added-->
</PropertyGroup> <ItemGroup>
<Folder Include="Models\" />
<AvaloniaResource Include="Assets\**" />
</ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="11.3.0" />
<PackageReference Include="Avalonia.Desktop" Version="11.3.0" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.0" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.0" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.0">
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
</ItemGroup>
</Project>

然后,还差一个位置——在ViewLocator.cs中,有一句

var name = param.GetType().FullName?.Replace("ViewModel", "View", StringComparison.Ordinal);

这里String.Replace方法用了一个(string oldValue,string newValue,StringComparison compType)的重载版本,这个重载版本直至.NET Core 2.0开始才有,是不受.NET Framework 4.8支持的。因此我们需要删掉最后一个参数StringComparison.Ordinal,这个参数只影响Replace方法在oldValue中的搜索模式,基本不会影响替换结果。

全部完成后我们就可以构建初始项目——

可以看出,Avalonia在.NET Framework 4.8的环境下生成并运行了。当然了,这种情况下Avalonia跨平台的特性就不再支持了。

Avalonia硬配.NET Framework 4.8的更多相关文章

  1. .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上(ZT)

    本文转载   https://walterlv.github.io/dotnet/2017/09/22/dotnet-version.html ,感谢  吕毅 (包含链接: https://walte ...

  2. .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上

    转帖:https://blog.csdn.net/WPwalter/article/details/78067293 另参考:https://www.cnblogs.com/worksguo/arch ...

  3. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  4. .NET 开源免费图表组件库,Winform,WPF 通用

    大家好, 我是等天黑, 今天给大家介绍一个功能完善, 性能强悍的图表组件库 ScottPlot, 当我第一次在 github 上看到这个库, 我看不懂,但我大受震撼, 这么好的项目当然要分享出来了. ...

  5. Spring系列(零) Spring Framework 文档中文翻译

    Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...

  6. 资源描述结构(Resource Description Framework,RDF)

    资源描述框架(Resource Description Framework),一种用于描述Web资源的标记语言.RDF是一个处理元数据的XML(标准通用标记语言的子集)应用,所谓元数据,就是" ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  8. 【配置属性】—Entity Framework 对应表字段的类型的设定配置方法

    摘自:http://www.cnblogs.com/nianming/archive/2012/11/07/2757997.html Entity Framework Code First的默认行为是 ...

  9. AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...

  10. 让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库

    获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...

随机推荐

  1. python,下载图片到本地自定文件夹内的方法

    比如,我们需要下载下面这张图,图片的网络地址:"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000 ...

  2. sonarqube+gitlab+jenkins+maven集成搭建(三)

    安装JENKINS 关闭防火墙[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# systemctl disable fir ...

  3. Netty 心跳机制实现(客户端与服务端)

    Netty 心跳机制实现(客户端与服务端) Netty 的心跳机制是保持长连接有效性的重要手段,可以检测连接是否存活并及时释放无效连接.下面介绍客户端和服务端的完整实现方案. 一.服务端实现 1. 基 ...

  4. office for mac 16.79 破解版安装教程

    教程声明 本人电脑系统:macOS Sonoma,安装版本为office for mac 16.79.本教程旨在学习分享.资源均为从网络处下载,安装破解版有风险,请自己权衡.不会安装的朋友可评论区探讨 ...

  5. ElasticSearch学习——帮助类

    ElasticSearch第五步-.net平台下c#操作ElasticSearch详解 - 梦亦晓 - 博客园 (cnblogs.com) C# 如何使用 Elasticsearch (ES) - 领 ...

  6. Python3循环结构(二) while循环

    Python3 while循环 当循环次数无界时通常会使用while循环. 1.使用while循环输出九九乘法表 i=1 while i < 10: j = 1 while j < i + ...

  7. tar命令打包指定目录及其文件,而不包括其上级目录

    想指定将/var目录下的log目录及其文件打包到当前目录,在压缩包解压时不包括/var目录,可使用如下方式: tar -zcvf log_bak.tar.gz -C /var/ log # 注意log ...

  8. 信息资源管理综合题之“H7N9禽流感-同学有无权利要求政府疫情进行信息公开 和 依据什么法律 和 相关法律的作用是什么 和 结合案例”

    一.案例:网络新闻报道某省有一名疑似H7N9禽流感病毒患者就医后不治身亡,于是刘苗红同学写信给该省政府,要求公开H7N9相应时期的信息 1.刘苗红同学有无权利要求省政府对H7N9疫情进行信息公开? 2 ...

  9. jsp技术之“如何在jsp中判断属性为空”

    一.判断对象列表为空不显示某段代码 <%-- 展开子属性 --%> <c:if test="${not empty product.variations}"> ...

  10. 详解ES6升级优化以及知识点汇总

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...