找回密码
 立即注册
首页 业界区 业界 Avalonia硬配.NET Framework 4.8

Avalonia硬配.NET Framework 4.8

县挫伪 昨天 22:13
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 .NET (Mvvm) App项目,在默认状态下,Avalonia将使用.NET 8.0,直接编辑项目文件,修改目标平台为net4.8。
然而,Avalonia中用到了相当多的新版本语言特性,.NET Framework 4.8官方最大支持为C# 7.3,Nullable引用类型是不支持的。于是通过修改语言版本为8.0(如果项目文件里没有,则在中手动添加)。修改完的项目文件如下所示:
  1. <Project Sdk="Microsoft.NET.Sdk">
  2.   <PropertyGroup>
  3.     <OutputType>WinExe</OutputType>
  4.     <TargetFramework>net4.8</TargetFramework>
  5.     <Nullable>enable</Nullable>
  6.     <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
  7.     app.manifest</ApplicationManifest>
  8.     true</AvaloniaUseCompiledBindingsByDefault>
  9.     <LangVersion>8.0</LangVersion>
  10.   </PropertyGroup>
  11.   <ItemGroup>
  12.     <Folder Include="Models" />
  13.    
  14.   </ItemGroup>
  15.   <ItemGroup>
  16.     <PackageReference Include="Avalonia" Version="11.3.0" />
  17.     <PackageReference Include="Avalonia.Desktop" Version="11.3.0" />
  18.     <PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.0" />
  19.     <PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.0" />
  20.    
  21.     <PackageReference Include="Avalonia.Diagnostics" Version="11.3.0">
  22.       <IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
  23.       <PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
  24.     </PackageReference>
  25.     <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
  26.   </ItemGroup>
  27. </Project>
复制代码
然后,还差一个位置——在ViewLocator.cs中,有一句
  1. 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中的搜索模式,基本不会影响替换结果。
全部完成后我们就可以构建初始项目——
1.png

可以看出,Avalonia在.NET Framework 4.8的环境下生成并运行了。当然了,这种情况下Avalonia跨平台的特性就不再支持了。
出处:https://www.cnblogs.com/oberon-zjt0806/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册