Windows运行.NET MAUI应用触发System.TypeInitializationException异常
.NET MAUI Windows平台运行时TypeInitializationException异常问题
近期在Windows平台运行.NET MAUI应用时触发以下异常:
Exception thrown: 'System.TypeInitializationException' in forecAstIng.dll An exception of type 'System.TypeInitializationException' occurred in forecAstIng.dll but was not handled in user code The type initializer for '<Module>' threw an exception.
异常出自项目创建时自动生成的Windows平台专属文件App.xaml.cs中的**MauiProgram.CreateMauiApp()**方法,代码如下:
using Microsoft.UI.Xaml; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. namespace forecAstIng.WinUI { /// <summary> /// Provides application-specific behavior to supplement the default Application class. /// </summary> public partial class App : MauiWinUIApplication { /// <summary> /// Initializes the singleton application object. This is the first line of authored code /// executed, and as such is the logical equivalent of main() or WinMain(). /// </summary> public App() { this.InitializeComponent(); } protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); } }
MauiProgram.cs代码:
using forecAstIng.View; using Microsoft.Extensions.Logging; using CommunityToolkit.Maui; using forecAstIng.Services; namespace forecAstIng { public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCommunityToolkit() .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); }); builder.Services.AddSingleton<DataService>(); builder.Services.AddSingleton<ForecastsViewModel>(); builder.Services.AddSingleton<MainPage>(); builder.Services.AddTransient<MorePageViewModel>(); builder.Services.AddTransient<MorePage>(); #if DEBUG builder.Logging.AddDebug(); #endif return builder.Build(); } } }
项目csproj文件代码:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks> <!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET --> <!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> --> <!-- Note for MacCatalyst: The default runtime is maccatalyst-x64, except in Release config, in which case the default is maccatalyst-x64;maccatalyst-arm64. When specifying both architectures, use the plural <RuntimeIdentifiers> instead of the singular <RuntimeIdentifier>. The Mac App Store will NOT accept apps with ONLY maccatalyst-arm64 indicated; either BOTH runtimes must be indicated or ONLY macatalyst-x64. --> <!-- For example: <RuntimeIdentifiers>maccatalyst-x64;maccatalyst-arm64</RuntimeIdentifiers> --> <OutputType>Exe</OutputType> <RootNamespace>forecAstIng</RootNamespace> <UseMaui>true</UseMaui> <SingleProject>true</SingleProject> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <!-- Display name --> <ApplicationTitle>forecAstIng</ApplicationTitle> <!-- App Identifier --> <ApplicationId>com.companyname.forecasting</ApplicationId> <!-- Versions --> <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> <ApplicationVersion>1</ApplicationVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion> <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion> </PropertyGroup> <ItemGroup> <!-- App Icon --> <MauiIcon Include="Resources\AppIcon\appicon.svg" Color="#512BD4" BaseSize="32,32" /> <!-- Splash Screen --> <MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="128,128" /> <!-- Images --> <MauiImage Include="Resources\Images\*" /> <!-- Custom Fonts --> <MauiFont Include="Resources\Fonts\*" /> <!-- Raw Assets (also remove the "Resources\Raw" prefix) --> <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> </ItemGroup> <ItemGroup> <None Remove="resources\images\source.md" /> </ItemGroup> <ItemGroup> <PackageReference Include="CommunityToolkit.Maui" Version="9.0.3" /> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.0" /> <PackageReference Include="Microsoft.Maui.Controls" Version="8.0.82" /> <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="8.0.82" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> </ItemGroup> <ItemGroup> <MauiXaml Update="View\SearchPrompt.xaml"> <Generator>MSBuild:Compile</Generator> </MauiXaml> </ItemGroup> </Project>
当前使用.NET 8框架,异常出现前曾更新过项目依赖的NuGet包,此前Windows平台运行应用时已存在其他异常问题。项目使用的NuGet包包括:
- CommunityToolkit.Maui
- CommunityToolkit.Mvvm
- Microsoft.Extensions.Logging.Debug
- Microsoft.Maui.Controls
- Microsoft.Maui.Controls.Compatibility
- Microsoft.NET.ILLink.Tasks
- Newtonsoft.Json
内容的提问来源于stack exchange,提问作者Reptiliand
相关产品推荐
相关产品推荐

