首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLRMD体系结构MisMatch

CLRMD体系结构MisMatch
EN

Stack Overflow用户
提问于 2016-10-02 23:13:52
回答 1查看 712关注 0票数 0

我正在处理CLRMD库,并试图加载一个转储。在这个过程和dac之间,我得到了不匹配的架构。控制台应用程序,它是创建字符串数组的x86应用程序。

代码语言:javascript
复制
static void Main(string[] args)
    {
        string[] strArray = null;

        for (int i = 0; i < 100; i++)
        {
            strArray = new string[100];
            strArray[i] = "One";
            System.Threading.Thread.Sleep(1000);
            Console.WriteLine(i); 
        }

        Console.Read();
    }

我使用32位TaskManager来创建转储,当我加载转储时,会得到架构不匹配错误。

dataTarget.Architecture是Amd64和PointerSize 8。

但当附加相同的应用程序时,dataTarget.Architecture为x86,Pointersize为4。

不知道这是什么时候的区别。我在拉屎的时候是不是漏了什么东西。请告诉我如何将转储加载到CLRMD中。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 14:24:44

这是一个非常直截了当的错配,您的程序运行为32位进程,但是最小进程是从64位进程创建的。DAC不支持混合。

您必须消除抖动强制,以便您的程序运行作为一个64位的进程。Project > Properties > Build选项卡,将Platform目标设置更改为AnyCPU并取消选中“偏好32位”复选框。重复发布配置。

请注意,解决方案平台名称与此设置无关,这可能是您的测试控制台应用程序被证明是64位进程的原因,尽管您认为它是针对x86的。您可以重复检查任务管理器、详细信息选项卡,添加"Platform“列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39822688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档