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

UWP应用误将打包原生.exe加载为C#程序集启动失败

解决方案:UWP项目误加载原生exe为C#程序集导致BadImageFormatException

核心原因

XAML元数据生成器(负责生成XamlTypeInfo.g.cs)在扫描项目输出目录时,错误地将原生MinidumpWriter.exe识别为托管程序集并尝试加载解析,引发System.BadImageFormatException。

具体修复步骤

  • 在C# XAML项目中排除原生exe的元数据扫描
    编辑项目的.csproj文件,添加以下配置,让XAML编译器跳过对指定exe的扫描:

    <PropertyGroup>
      <!-- 排除MinidumpWriter.exe被XAML元数据扫描 -->
      <DefaultItemExcludes>$(DefaultItemExcludes);$(OutputPath)MinidumpWriter.exe</DefaultItemExcludes>
    </PropertyGroup>
    
    <ItemGroup>
      <!-- 明确标记exe为内容文件,而非程序集引用 -->
      <Content Include="$(OutputPath)MinidumpWriter.exe">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        <ExcludeFromXmlSerialization>true</ExcludeFromXmlSerialization>
      </Content>
    </ItemGroup>
    
  • 修正NuGet包的结构
    确保NuGet包中的MinidumpWriter.exe放置在contentFiles\win10-<平台>\native目录下,而非lib目录。这样NuGet会将其作为原生内容文件复制到项目输出,而非作为程序集引用。例如包结构:

    your-nuget-package/
    ├── contentFiles/
    │   └── win10-x64/
    │       └── native/
    │           └── MinidumpWriter.exe
    └── lib/
        └── uap10.0/
            └── your-native-library.dll
    
  • 验证Package.appxmanifest的协议注册
    确认协议关联的exe路径正确,且未被错误配置为托管组件。协议注册示例:

    <Extensions>
      <uap:Extension Category="windows.protocol">
        <uap:Protocol Name="your-protocol-name">
          <uap:DisplayName>Your Protocol</uap:DisplayName>
          <uap:Executable>MinidumpWriter.exe</uap:Executable>
          <uap:EntryPoint>MinidumpWriter.exe</uap:EntryPoint>
        </uap:Protocol>
      </uap:Extension>
    </Extensions>
    

    注意EntryPoint要指向原生exe,而非托管类。

  • 清理项目缓存并重新生成

    1. 删除项目的bin和obj文件夹
    2. 清理NuGet缓存:在Visual Studio中依次点击「工具」→「NuGet包管理器」→「包管理器设置」→「清除所有NuGet缓存」
    3. 重新生成整个解决方案
  • 检查C++库的引用配置
    确保UWP C库在引用NuGet包时,仅将MinidumpWriter.exe作为内容文件复制,而非添加为程序集引用。在C库的.vcxproj中确认相关配置:

    <ItemGroup>
      <Content Include="path\to\MinidumpWriter.exe">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
    

内容的提问来源于stack exchange,提问作者Cy S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:05:06