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

.NET Maui 简单USB跨平台项目发布失败求助

.NET 8 MAUI Windows USB通信项目发布失败解决方案

平台特定NuGet包配置(针对System.IO.Ports)

1. DAL工程.csproj修改

将System.IO.Ports的引用限制在Windows平台,避免其他平台构建时加载无效依赖:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <!-- 仅Windows平台引用System.IO.Ports -->
  <ItemGroup Condition="$([MSBuild]::IsOSPlatform('Windows')) OR '$(TargetPlatform)' == 'Windows'">
    <PackageReference Include="System.IO.Ports" Version="8.0.0" />
  </ItemGroup>
</Project>

2. MAUI工程.csproj补充配置

确保MAUI的Windows目标能正确获取依赖,同时阻止依赖传递到其他平台:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-windows10.0.19041.0</TargetFrameworks>
    <!-- 保留原有MAUI配置 -->
  </PropertyGroup>

  <!-- Windows平台专属引用,PrivateAssets避免传递到其他平台 -->
  <ItemGroup Condition="'$(TargetFramework)' == 'net8.0-windows10.0.19041.0'">
    <PackageReference Include="System.IO.Ports" Version="8.0.0" PrivateAssets="all" />
  </ItemGroup>

  <!-- DAL工程引用 -->
  <ItemGroup>
    <ProjectReference Include="..\DAL\DAL.csproj" />
  </ItemGroup>
</Project>

发布失败的额外修复步骤

  • 彻底隔离Windows相关代码:不仅要隔离类实现,所有using System.IO.Ports语句也必须用#if Windows包裹,否则其他平台编译时会尝试解析无效命名空间:
#if Windows
using System.IO.Ports;
#endif

public class USBCommunicationManager
{
#if Windows
    private WindowsUSBCommunication _windowsUsb;
#endif

    public void Initialize()
    {
#if Windows
        _windowsUsb = new WindowsUSBCommunication();
#endif
    }
}
  • 清理构建缓存:删除项目目录下的bin和obj文件夹,重新生成解决方案后再尝试发布,避免缓存的旧依赖干扰。

  • 指定Windows目标发布:

    • Visual Studio发布时,选择Windows作为目标平台,不要选"所有平台";
    • 命令行发布使用:
      dotnet publish -f net8.0-windows10.0.19041.0 -c Release
      
  • 核对框架版本:确保DAL工程的TargetFramework(如net8.0)与MAUI Windows目标的框架版本完全匹配,避免版本不兼容问题。

内容的提问来源于stack exchange,提问作者shahaf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:54:52