• Windows上一步一步CoreRun


    起步只有3个文件:CoreRun.exe, coreclr.dll, mscorlib.dll, HelloWorld.exe

    运行命令:CoreRun HelloWorld.exe

    出错:

    Assert failure(PID 9672 [0x000025c8], Thread: 16280 [0x3f98]): 0
    
    !  + 0x0 (0x00000000`00000000)
        File: e:devgithubdotnetcoreclrsrcutilcodeccomprc.cpp, Line: 814 Image
    :
    E:DevGitHubDotNetCoreClrHelloWorld
    untime_windowsCoreRun.exe
    **** MessageBox invoked, title 'CoreRun.exe - Assert Failure (PID 9672, Thread 1
    6280/3f98)        ' ****
      0
    
    !  + 0x0 (0x00000000`00000000)
    
    e:devgithubdotnetcoreclrsrcutilcodeccomprc.cpp, Line: 814

    启动Visual Studio进行调试,发现是因为少了mscorrc.debug.dll这个文件。

    this	0x000007fdccd146b0 {coreclr.dll!CCompRC CCompRC::m_DefaultResourceDll} {m_Primary={m_LangId=0x000007fdccd146b0 L"en-US" ...} ...}	CCompRC *
    m_Primary	{m_LangId=0x000007fdccd146b0 L"en-US" m_hInst=0x0000000000000000  m_fMissing=1 }	CCulturedHInstance
    m_pHash	0x0000000000000000 	CCulturedHInstance *
    m_nHashSize	0	int
    m_csMap	0x000000a31a9cb933	void *
    m_pResourceFile	0x000007fdcc9cd200 L"mscorrc.debug.dll"	const wchar_t *
    m_fpGetThreadUICultureId	0x000007fdcbde5ac8 {coreclr.dll!GetThreadUICultureId(wchar_t[85] *)}	int (wchar_t[85] *) *
    m_fpGetThreadUICultureNames	0x000007fdcbde5d68 {coreclr.dll!GetThreadUICultureNames(StringArrayList *)}	HRESULT (StringArrayList *) *

    将mscorrc.debug.dll复制过来,继续运行,出现下面的错误:

    Unhandled Exception: System.IO.FileNotFoundException: Could not load file or ass
    embly 'System.Console, Version=999.999.999.0, Culture=neutral, PublicKeyToken=b0
    3f5f7f11d50a3a' or one of its dependencies. The system cannot find the file spec
    ified.
       at Program.Main(String[] args)

    需要System.Console程序集,将之从corefx编译出来的程序集中复制过来。

    继续运行,又出错,这次是需要System.Runtime.dll,从corefx的packages文件夹(nuget packages)中复制过来(注:lib et45子文件夹)

    接下来又需要System.IO.dll,也是从corefx的packages文件夹中复制。

    再接下来还需要从corefx的packages文件夹中复制3个程序集:System.Threading.dll, System.IO.FileSystem.Primitives.dll, System.Diagnostics.Debug.dll。

    这时,当前文件夹一共有11个文件:

    coreclr.dll
    CoreRun.exe
    HelloWorld.exe
    mscorlib.dll
    mscorrc.debug.dll
    System.Console.dll
    System.Diagnostics.Debug.dll
    System.IO.dll
    System.IO.FileSystem.Primitives.dll
    System.Runtime.dll
    System.Threading.dll

    继续运行,出现新的错误:

    Unhandled Exception: System.IO.FileNotFoundException: Could not load file or ass
    embly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    ' or one of its dependencies. The system cannot find the file specified.
       at System.ConsolePal.WindowsConsoleStream..ctor(IntPtr handle, FileAccess acc
    ess)
       at System.ConsolePal.GetStandardFile(IntPtr handle, FileAccess access)
       at System.ConsolePal.OpenStandardOutput()
       at System.Console.OpenStandardOutput()
       at System.Console.<>c__DisplayClass3.<get_Out>b__4()
       at System.Console.EnsureInitialized[T](T& field, Func`1 initializer)
       at System.Console.get_Out()
       at System.Console.WriteLine(String value)
       at Program.DrawWindows()
       at Program.Main(String[] args)

    System程序集就是mscorlib.dll,明明有这个文件,却说找不到。

    后来换成corefx中packagesMicrosoft.DotNet.CoreCLR.1.0.3-prereleaselibaspnetcore50中的mscrolib.dll,就不错这个错误了。

    但是运行CoreRun HelloWorld.exe却无任何输出,换成CoreRun -v HelloWorld.exe出现下面的错误:

    HOSTLOG: Finding GetCLRRuntimeHost(...)
    HOSTLOG: Calling GetCLRRuntimeHost(...)
    HOSTLOG: Setting ICLRRuntimeHost2 startup flags
    HOSTLOG: Starting ICLRRuntimeHost2
    HOSTLOG: Failed to start CoreCLR. ERRORCODE: 0x80004005/E_FAIL
    HOSTLOG: Execution failed

    一步一步就到这里,暂时没找到解决方法。

  • 相关阅读:
    理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,是理解消息的关键)
    Javascript 的addEventListener()及attachEvent()区别分析
    鼠标拖拽
    鼠标右键菜单
    keydown
    一串跟随鼠标的DIV
    event对象和事件冒泡
    发表说说
    文档流
    CSS3 @keyframes 规则
  • 原文地址:https://www.cnblogs.com/dudu/p/4329456.html
Copyright © 2020-2023  润新知