无法使用GAC for EnterpriseLibrary.Data

时间:2014-05-22 08:49:58

标签: c# dll assemblies .net-assembly gac

我正在使用GAC分享dll&#39。s。

在这里,我有一个使用Microsoft.Practices.EnterpriseLibrary.Data.dll 5.0.414.0的应用程序。如果我把它放在与.exe相同的文件夹上,一切都没问题,但是当我想将它从这个文件夹中删除时,即使我把它安装在GAC上也没有用...

由于

,我已将其安装在GAC上
D:\Applications\Services\App>GACUTIL.exe -i Microsoft.Practices.EnterpriseLibrary.Data.dll
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

当我从此文件夹中删除此dll时,应用程序无法正常运行,为什么?

我尝试了GAC,其他人也没问题,而且当我转到C:\ WINDOWS \ assembly时,dll看起来已经安装了!

我已经重新尝试使用之前向您展示的CLI安装它。

修改

类型:

Exception type:
Microsoft.Practices.ServiceLocation.ActivationException, Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

消息:

Activation error occured while trying to get instance of type LogWriter, key ""

堆栈:

Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService]()
Microsoft.Practices.EnterpriseLibrary.Logging.Logger.get_Writer()
MyFramework.Logging.MyLogger.WriteVerbose(String applicationName, String title, String logText)
MyApp.Fleet_Service.GetInfo(Int32 accountid, String[] msisdns, DateTime from, DateTime to) in c:\Clients\Project\V1\Fleet_Service.cs:line 111
SyncInvokeGetInfo(Object , Object[] , Object[] )

感谢帮助我

1 个答案:

答案 0 :(得分:1)

根据您使用的.NET版本,GAC可能不在C:\Windows\Assembly 对于.NET 4,GAC位于%windir%\Microsoft.NET\assembly\ 通常,如果要了解.NET应用程序找不到程序集的原因,则应使用Assembly Binding Log Viewer工具(VS命令提示符下的fuslogvw.exe)。

编辑:看到你的评论后,可能是你的应用程序没有直接尝试加载失败的程序集,但可能还有其他一些dll。使用程序集绑定日志查看器工具确定失败的原因和原因。此外,如果您提供有关应用程序失败的更多详细信息(错误消息,堆栈跟踪......),那会更好。