You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从.NET MAUI Blazor Hybrid App向控制台应用导入类/结构体/记录

.NET MAUI Blazor Hybrid类导入控制台应用的兼容性问题解决

需求

  • 将.NET MAUI Blazor Hybrid App中的部分类/结构体/记录导入至控制台应用(控制台仅用于开发,不调用Blazor或.NET MAUI功能)
  • 需要将目标类的访问修饰符从internal改为public,示例如下:
public record PeopleManagementPageEnglishLocalization : PeopleManagementPageLocalization
{
  public override string personManagerActivationGuidance { get; } = 
      "Click or tap the person card to view details or edit the dedicated person data.";
  
  public override SuccessMessages successMessages { get; init; } = new()
  {
    personAddingSucceeded = "Person has been added.",
    personUpdatingSucceeded = "Person has been updated",
    personDeletingSucceeded = "Person has been deleted."
  };
  
  public override ErrorMessages errorMessages { get; init; } = new()
  {
    personAddingFailed = SharedStaticEnglishStrings.SingleInstance.
        buildDataRetrievingOrSubmittingFailedPoliteMessage("The malfunction has occurred during adding of new person."),
    personUpdatingFailed = SharedStaticEnglishStrings.SingleInstance.
        buildDataRetrievingOrSubmittingFailedPoliteMessage("The malfunction has occurred during updating of person."),
    personDeletingFailed = SharedStaticEnglishStrings.SingleInstance.
      buildDataRetrievingOrSubmittingFailedPoliteMessage("The malfunction has occurred during deleting of person.")
  };
}

遇到的问题

添加MAUI项目引用后,控制台应用出现以下问题:

  • 编译报错:无法解析System相关符号
  • 运行时触发NU1201兼容性错误:项目Client不兼容net8.0,移除引用后恢复正常

尝试过的方案

将控制台应用的TargetFramework改为net8.0-windows,仍出现版本不兼容错误:

Error (active)  NU1201  Project Client is not compatible with net8.0-windows7.0 (.NETCoreApp,Version=v8.0). Project Client supports:
  - net8.0-android34.0 (.NETCoreApp,Version=v8.0)
  - net8.0-ios17.5 (.NETCoreApp,Version=v8.0)
  - net8.0-maccatalyst17.5 (.NETCoreApp,Version=v8.0)
  - net8.0-windows10.0.19041 (.NETCoreApp,Version=v8.0) GeneratorOfAssetsForStaticPreview   D:\IntelliJ IDEA\****\Automation\GeneratorOfAssetsForStaticPreview\GeneratorOfAssetsForStaticPreview.csproj 1       

Error (active)      Project '..\..\Implementation\Elements\Client\Client.csproj' targets 'net8.0-maccatalyst;net8.0-ios;net8.0-android;net8.0-windows10.0.19041.0'. It cannot be referenced by a project that targets '.NETCoreApp,Version=v8.0'.   GeneratorOfAssetsForStaticPreview   C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets   1890        

背景限制

必须基于现有类生成JSON文件并输出至.NET MAUI项目,且无法将这些类提取到独立的类库项目中。


解决方案

1. 匹配目标框架版本

将控制台项目的TargetFramework修改为与MAUI项目完全一致的Windows目标版本,即net8.0-windows10.0.19041。修改控制台项目的.csproj文件:

<PropertyGroup>
  <TargetFramework>net8.0-windows10.0.19041</TargetFramework>
</PropertyGroup>

2. 优化项目引用配置

在控制台项目的项目引用中添加PrivateAssets="all"和ExcludeAssets="runtime",避免引入MAUI的运行时依赖,仅保留编译时所需的类型信息:

<ProjectReference Include="..\..\Implementation\Elements\Client\Client.csproj" PrivateAssets="all" ExcludeAssets="runtime" />

3. 确保访问修饰符正确修改

将所有需要在控制台应用中访问的类、属性、方法的访问修饰符从internal改为public,包括示例中的记录类型及其重写的属性。

4. 排除MAUI平台特定代码(可选)

如果MAUI类中包含平台专属代码,可通过条件编译在控制台编译时排除:

#if !NET8_0_WINDOWS10_0_19041
// MAUI平台特定代码,控制台编译时会忽略
#endif

内容的提问来源于stack exchange,提问作者Takeshi Tokugawa YD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:55:21