gpt4 book ai didi

使用企业库时 C# 非托管应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 16:02:04 27 4
gpt4 key购买 nike

我有一个从非托管进程加载的 C# 库 DLL。到目前为止一切都很好。现在我想将 Enterprise Library 5.0 与其日志记录功能结合起来。我添加了这些引用:

  • Microsoft.Practices.EnterpriseLibrary.Common.dll
  • Microsoft.Practices.Unity.dll
  • Microsoft.Practices.Unity.Interception.dll
  • Microsoft.Practices.ServiceLocation.dll
  • Microsoft.Practices.EnterpriseLibrary.Logging.dll

  • ...以及所需的所有 using 语句。
    这是该类(class)的摘录:
    using Microsoft.Practices.EnterpriseLibrary.Common;
    using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
    using Microsoft.Practices.Unity;
    using Microsoft.Practices.Unity.InterceptionExtension;
    using Microsoft.Practices.ServiceLocation;
    using Microsoft.Practices.Unity.Configuration;

    [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=2)]
    unsafe public static class DLLDispatch
    {
    private static IConfigurationSourceBuilder LoggingBuilder = new ConfigurationSourceBuilder();
    ...
    }

    问题是,当定义此字段时,非托管进程会崩溃。如果将其注释掉,则不会发生此崩溃。这是此崩溃的 Windows 应用程序日志:

    **Sig[0].Name=应用程序名称

    信号[0].Value=terminal64.exe

    Sig[1].Name=应用程序版本

    信号[1].值=5.0.0.507

    Sig[2].Name=应用程序时间戳

    信号[2].值=003f5e00

    Sig[3].Name=故障模块名称

    SIG[3].Value=clr.dll

    Sig[4].Name=故障模块版本

    信号[4].值=4.0.30319.237

    Sig[5].Name=故障模块时间戳

    信号[5].值=4dd2333e

    Sig[6].Name=异常代码

    信号[6].值=c00000fd

    Sig[7].Name=异常偏移

    信号[7].值=000000000007382a**

    我在网上搜索异常代码 c00000fd 并发现它是一个 stackoverflow :-) 异常。
    我玩了一下,每次企业库中涉及一个实例时都会发生这种崩溃。如果没有使用该库,则不会发生崩溃。这里发生了什么?是因为该类处于不安全的上下文中还是还有什么?
    提前致谢。

    最佳答案

    我找到了解决这个问题的方法。必须在非托管应用程序文件夹中放置一个 app-config 文件,其中包含以下内容:

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath="Unmanaged application startup folder" />
    </assemblyBinding>
    </runtime>
    </configuration>

    使用此信息,CLR 可以绑定(bind)程序集并在正确的文件夹中搜索。我不清楚配置文件是否对非托管应用程序也有用。

    谢谢,于尔根

    关于使用企业库时 C# 非托管应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570614/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com