C#exception'0xC0020001:字符串绑定无效。

时间:2016-07-25 08:34:29

标签: c# .net

我卸载程序时遇到了这个异常。环境如下:

  1. 该程序有一个计时器,每小时进行一次刷新操作。转储文件中显示的函数调用属于刷新操作
  2.   

    00e4f058 547c62db(MethodDesc 53ec7398 + 0x17 System.Windows.Forms.Timer + TimerNativeWindow.OnThreadException(System.Exception)),调用53f8e4bc   00e4f064 53fcea31(MethodDesc 53e50e94 + 0xc1 System.Windows.Forms.NativeWindow.Callback(IntPtr,Int32,IntPtr,IntPtr))   00e4f0e8 011fa397(MethodDesc 011aac98 + 0x8f XXX.XForm.TimerPoll()),调用(MethodDesc 6b8b34c8 +0 System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo))

    1. 刷新操作在大多数情况下都能正常运行。但如果我同时卸载,可能会有例外。
    2. 有些文章与例外0xC0020001有关,但很难适用于我的计划。 有人说这是由非托管代码调用托管代码引起的,而CLR已停止(在我的情况下,主要发生在卸载过程中),我想知道什么会导致CLR停止。

1 个答案:

答案 0 :(得分:-1)

当某些DLL未与本地存储库链接时,将显示此信息。

推荐的解决方案是“删除托管DLL的入口点”。

  1. NOENTRY links - 在解决方案资源管理器中,右键单击项目节点,单击“属性”。在“属性页”对话框中,单击“链接器”,单击“命令行”,然后将此开关添加到“其他选项”字段。
  2. msvcrt.lib - 在“属性页”对话框中,单击“链接器”,单击“输入”,然后将msvcrt.lib添加到“其他依赖项”属性中。
  3. nochkclr.obj - 删除。在“输入”页面(与上一步骤相同的页面)中,从“附加依赖项”属性中删除nochkclr.obj。
  4. CRT中的链接。在“输入”页面(与上一步骤相同的页面)中,将__DllMainCRTStartup @ 12添加到“强制符号引用”属性中。