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

MAUI项目调试正常但发布失败,引用VB类库找不到dll

问题:MAUI项目引用VB类库发布时找不到依赖DLL

项目配置

Project1.csproj(C# MAUI项目)

<PropertyGroup>
    <TargetFrameworks>net7.0-maccatalyst;net7.0-ios;net7.0-android</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
    <OutputType>Exe</OutputType>
    <UseMaui>true</UseMaui>
    <SingleProject>true</SingleProject>
    <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
  <ProjectReference Include="..\Smanager\Smanager.vbproj" />
</ItemGroup>

Project2.csproj(Visual Basic类库)

<PropertyGroup>
    <RootNamespace>Smanager</RootNamespace>
    <TargetFramework>net7.0</TargetFramework>
</PropertyGroup>

问题现象

调试及本地Release模式运行正常,两个项目断点均可触发,但执行发布操作时报错,输出如下:

1>1 of 2 projects are up-to-date for restore.
1>Cannot resolve Assembly or Windows Metadata file 'C:\Users\...\bin\Release\net7.0\Smanager.dll'
1>Metadata file 'C:\Users\...\bin\Release\net7.0\Smanager.dll' could not be found
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
========== Elapsed 00:18.234 ==========
========== Package: 0 succeeded, 1 failed ===========

原因分析

  1. 目标框架不匹配:VB类库仅编译为net7.0单一框架,而MAUI项目是多目标框架项目,发布时部分平台编译流程无法找到对应框架的类库输出。
  2. 构建依赖顺序异常:发布阶段MAUI项目的构建优先级高于VB类库,导致MAUI编译时依赖的DLL尚未生成。
  3. 多平台发布路径不匹配:不同平台的编译输出路径存在差异,MAUI项目无法在统一路径下找到VB类库的DLL文件。

解决办法

1. 对齐类库与MAUI项目的目标框架

修改VB类库的TargetFramework为多目标框架,覆盖MAUI项目的所有目标平台,确保每个平台编译时都能找到对应版本的类库:

<PropertyGroup>
    <RootNamespace>Smanager</RootNamespace>
    <TargetFrameworks>net7.0;net7.0-android;net7.0-ios;net7.0-maccatalyst;net7.0-windows10.0.19041.0</TargetFrameworks>
</PropertyGroup>

也可根据实际发布需求,仅保留需要的目标框架(如只发布Windows和Android则删除iOS、maccatalyst相关项)。

2. 强制发布时优先构建依赖项目

在MAUI项目的ProjectReference中添加构建依赖配置,确保发布流程先编译VB类库:

<ItemGroup>
  <ProjectReference Include="..\Smanager\Smanager.vbproj">
      <BuildProjectReferences>true</BuildProjectReferences>
      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
  </ProjectReference>
</ItemGroup>

3. 指定单一目标平台发布

若无需发布所有平台,在Visual Studio发布向导中选择具体的目标平台(如Windows或Android),避免多平台编译带来的依赖匹配问题。

4. 统一输出路径

显式指定VB类库的输出路径与MAUI项目的依赖查找路径一致,修改VB类库的项目文件:

<PropertyGroup>
    <RootNamespace>Smanager</RootNamespace>
    <TargetFramework>net7.0</TargetFramework>
    <OutputPath>$(SolutionDir)bin\Release\net7.0\</OutputPath>
</PropertyGroup>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:20:22