.NET 8 MAUI应用发布至Windows Store时的依赖问题
问题背景
已发布至Google Play和亚马逊应用商店的.NET 8 MAUI应用,Windows版本本地运行正常。解决方案包含主项目、一个函数类库(附带测试项目),类库已添加至所有平台项目。使用Visual Studio 17.8.3在Debug/Release模式下发布至Windows Store时,报错:
Cannot resolve Assembly or Windows Metadata file 'mypath\LanguageInUse.ValidationLogic.dll'
类库项目文件如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>
已尝试清理解决方案、PowerShell手动还原包、重新生成等操作,问题未解决。
排查与解决步骤
统一类库与Windows项目的目标框架:MAUI Windows项目默认目标框架为
net8.0-windows10.0.19041.0(或更高版本),将类库的TargetFramework修改为与Windows项目一致的版本,避免跨框架解析问题:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>同步输出路径配置:右键类库项目 → 属性 → 生成 → 输出路径,设置为与MAUI主项目相同的路径(例如
bin\$(Configuration)\$(TargetFramework)\),确保发布时类库dll能输出到主项目的发布目录。检查引用属性设置:右键MAUI项目中的
LanguageInUse.ValidationLogic引用 → 属性,将复制本地设为True,特定版本设为False,保证发布时自动复制类库dll。强制依赖项复制到发布目录:在MAUI项目的
.csproj中添加以下配置,强制包含类库输出:<ItemGroup> <None Include="$(OutputPath)LanguageInUse.ValidationLogic.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> </None> </ItemGroup>清理VS缓存与项目文件:关闭Visual Studio,删除解决方案目录下的
.vs、bin、obj文件夹,重新打开解决方案,执行包还原与重新生成后再尝试发布。匹配发布架构:在Windows Store发布向导中,确认选择的目标架构(如x64、x86)与类库生成的架构一致,避免因架构不匹配导致dll无法找到。
内容的提问来源于stack exchange,提问作者Enrico

