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

如何从生成的MSIX包中排除重复的资源文件夹?

解决MSIX打包中Content资源重复的问题

问题根源

Windows Application Packaging Project默认会将引用的WPF项目所有输出文件同步到MSIX包的根目录,而你的WPF项目因为设置了Copy to Output Directory为Copy if newer,这些Content资源(SoundEffects、LibVLC文件夹)会同时出现在WPF项目的输出子目录(MyProject目录)和包的根目录,导致重复。

正确解决方案

修改打包项目的MSBuild配置,排除根目录下的重复资源:

  1. 在Visual Studio中右键点击打包项目(MyProject.Package.wapproj),选择卸载项目。
  2. 右键点击已卸载的项目,选择编辑MyProject.Package.wapproj。
  3. 在项目文件中找到任意一个<ItemGroup>节点(或新增一个),添加以下配置:
    <ItemGroup>
      <!-- 排除包根目录下的SoundEffects文件夹及其所有内容 -->
      <AppxPackagePayload Remove="SoundEffects\**" />
      <!-- 排除包根目录下的LibVLC文件夹及其所有内容 -->
      <AppxPackagePayload Remove="LibVLC\**" />
    </ItemGroup>
    
  4. 保存项目文件,重新加载项目并重新生成MSIX包。

为什么之前的方法无效

  • 你之前使用的<Content Remove="..." />不适用:打包项目中控制MSIX包内容的核心项是AppxPackagePayload,而非Content,Content仅针对打包项目自身的本地文件,无法控制从引用项目同步过来的资源。
  • MSIX Package Layout文件的排除规则可能存在路径匹配错误,且项目文件中的MSBuild配置优先级更高,会覆盖布局文件的设置。

注意事项

保持WPF项目中Content资源的原有设置(Build Action=Content、Copy to Output Directory=Copy if newer),确保这些资源能正常出现在MyProject的子目录中,满足用户可替换的需求。(注:MSIX包的安装目录是只读的,若要让用户替换文件,需要在应用启动时将资源复制到ApplicationData.LocalFolder这类可写目录,再进行访问)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:57