Visual Studio自定义数据可视化器抛出BadImageFormatException

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

在我们的c#代码库(因此托管代码)中,我们有一个类,我们在整个代码中广泛使用它。鉴于其无处不在,我决定编写一个自定义调试器可视化器,以便我们可以在调试时轻松检查这些对象。但是,我遇到了麻烦 - 当我尝试在IDE中运行可视化工具时,我得到了一个BadImageFormatException

我发布此信息是为了帮助遇到同样错误的其他人。我知道问题和解决方案是什么,并将发布。

visual-studio 64bit debuggervisualizer
1个回答
0
投票

问题是Visual Studio本身(IDE)仅作为32位进程运行。如果要在调试时为您运行自定义数据可视化工具,则自定义可视化工具和此可视化工具加载的所有代码必须是可加载的,并且可由32位进程运行。自定义可视化工具通过序列化/反序列化过程获取可视化对象。要反序列化对象,可视化工具必须能够加载定义对象的.dll。在这里,我们遇到了障碍:如果我们正在将应用程序构建到x64目标(而不是AnyCpu目标),那么我们就是一条小溪 - 如果自定义可视化工具本身构建为32-并不重要位目标,因为它是必须用于反序列化的应用程序代码。

因此,如果您的应用程序是针对64位目标构建的,则无法运行自定义可视化工具(大型,大型Microsoft!)。为了解决问题,您可以构建AnyCpu的目标,然后运行良好:应用程序加载并运行为64位(因为定位到AnyCpu),但IDE仍然能够将.dll加载为32 -bit用于在IDE的进程空间中运行的自定义数据可视化工具。

如果我错了,并且有更好的解决方法,我很乐意得到纠正!谢谢。

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