UWP 应用尝试将打包的本机 .exe 文件加载为 C# 程序集

问题描述 投票:0回答:1

我有一个带有本机库和一个 .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 项目中肯定不会发生)。

异常发生在XamlTypeInfo.g.cs: Exception

我正在使用 Visual Studio Community 2022 版本 17.8.3。

到目前为止我尝试过的事情:

  • 将 .exe 文件的复制逻辑从打包在 nuget 中的 .targets 文件移至 .vcxproj 文件(认为可能明确指定 .exe 作为内容会有所帮助,但没有 - 结果是相同的)。
  • 更改 SDK 版本。
  • 创建了一个新的 C# UWP 项目,包含上述 C++ UWP 库,并在清单中注册了协议。对于这个新项目,一切正常。通过比较该项目和有问题的项目之间的项目文件和清单,我发现没有任何区别。
c# visual-studio uwp nuget c++-cx
1个回答
0
投票

经过几个小时的搜索此错误的可能原因或类似情况后,我决定将 VS 版本从 17.8.3 回滚到 17.5.5。

这解决了问题。

如果这是一个错误,也许它已在新版本中修复,但我无法承担花费数小时更新、重建项目然后再次回滚的费用。 我猜VS就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.