【问题标题】:C# Unmanaged application crash when using Enterprise Library使用企业库时 C# 非托管应用程序崩溃
【发布时间】:2011-09-27 14:14:04
【问题描述】:

我有一个从非托管进程加载的 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 语句。 以下是该课程的摘录:

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=应用程序名称

Sig[0].Value=terminal64.exe

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

Sig[1].Value=5.0.0.507

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

Sig[2].Value=003f5e00

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

Sig[3].Value=clr.dll

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

Sig[4].Value=4.0.30319.237

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

Sig[5].Value=4dd2333e

Sig[6].Name=异常代码

Sig[6].Value=c00000fd

Sig[7].Name=异常偏移量

Sig[7].Value=000000000007382a**

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

【问题讨论】:

  • @Billy:对不起,我还在学习这个网站。我会照顾的。

标签: c# logging crash enterprise-library stack-overflow


【解决方案1】:

我找到了解决这个问题的方法。必须将一个 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 可以绑定程序集并在正确的文件夹中搜索。我不清楚配置文件是否对非托管应用程序也有用。

谢谢,于尔根

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多