我有一个带有本机库和一个 .exe 程序(MinidumpWriter.exe)的 nuget 包,用于处理崩溃。该库通过给定协议(在 Package.appxmanifest 中注册并在 C# 包装器初始化期间指定)调用打包的 exe 来工作。 此包是从 UWP C++ 库引用的,其中为本机库实现了 C# 包装器类。然后在 C# XAML 项目中使用此 C++ UWP 库。
此方法适用于多个其他项目,但不适用于某个特定项目,该项目的清单、csproj 或生成的 .appxrecipe 与 MinidumpWriter.exe 没有任何不同。 在有问题的项目中,应用程序无法启动,因为它尝试将本机 .exe 文件作为 C# 程序集加载,但失败并出现异常
System.BadImageFormatException:'无法加载文件或程序集 'MinidumpWriter,文化=中性,PublicKeyToken=null'。该模块是 预计包含程序集清单。'
更重要的是,应用程序包中的任何本机 .exe 文件都会被同等对待(这在其他 C# UWP 项目中肯定不会发生)。
我正在使用 Visual Studio Community 2022 版本 17.8.3。
到目前为止我尝试过的事情:
经过几个小时的搜索此错误的可能原因或类似情况后,我决定将 VS 版本从 17.8.3 回滚到 17.5.5。
这解决了问题。
如果这是一个错误,也许它已在新版本中修复,但我无法承担花费数小时更新、重建项目然后再次回滚的费用。 我猜VS就是这样。