EnterpriseLibrary.Logging.Database程序集将问题与Workflow相关联

时间:2011-03-17 15:45:47

标签: c# .net dll workflow-foundation-4

当我尝试运行调用我创建的Workflow 4活动的控制台程序时,出现以下错误。请注意,从单元测试执行或嵌入到另一个工作流程中时,工作流程会编译并运行时没有问题。

  

无法加载文件或程序集   “Microsoft.Practices.EnterpriseLibrary.Logging.Database,   PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖项。系统   找不到指定的文件。

我正在使用EnterpriseLibrary 5.0来记录和连接字符串。

我注意到程序集的路径如下:

  

C:\ Program Files(x86)\ Microsoft   企业图书馆   5.0 \宾\ Microsoft.Practices.EnterpriseLibrary。*

     

查看程序集绑定日志是   请参阅以下内容:

     

*装配活页夹日志条目(17/03/2011 @ 15:32:48)*

     

操作失败。结果:hr   = 0x80070002。系统找不到指定的文件。

     

装配管理器从以下位置加载:   C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll   运行可执行文件   C:\开发\工作\ EquinoxeAISManagementSystemWorkflow \ EquinoxeAISManagementSystemWorkflow.FeedManager \ BIN \调试\ EquinoxeAISManagementSystemWorkflow.FeedManager.vshost.exe   ---详细的错误日志如下。

     

===预绑定状态信息===日志:用户= EQUINOXEAIS \ pmckee日志:   DisplayName =   Microsoft.Practices.EnterpriseLibrary.Logging.Database,   版本= 5.0.414.0,文化=中立,   公钥= 31bf3856ad364e35   (完全指定)LOG:Appbase =   文件:/// C:/Development/Work/EquinoxeAISManagementSystemWorkflow/EquinoxeAISManagementSystemWorkflow.FeedManager/bin/Debug/   日志:初始PrivatePath = NULL日志:   Dynamic Base = NULL LOG:Cache Base =   NULL LOG:AppName =   EquinoxeAISManagementSystemWorkflow.FeedManager.vshost.exe   召集程序集:   EquinoxeAISManagementSystemWorkflow.ActivityLibrary,   版本= 1.0.0.0,文化=中立,

     

公钥=空。

     

日志:此绑定在默认加载时启动   上下文。日志:没有申请   找到配置文件。日志:使用   主机配置文件:日志:使用   来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。   日志:政策后参考:   Microsoft.Practices.EnterpriseLibrary.Logging.Database,   版本= 5.0.414.0,文化=中立,   PublicKeyToken = 31bf3856ad364e35日志:   GAC Lookup没有成功。日志:   试图下载新的URL   文件:/// C:/Development/Work/EquinoxeAISManagementSystemWorkflow/EquinoxeAISManagementSystemWorkflow.FeedManager/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Logging.Database.DLL。   日志:尝试下载新网址   文件:/// C:/Development/Work/EquinoxeAISManagementSystemWorkflow/EquinoxeAISManagementSystemWorkflow.FeedManager/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Logging.Database/Microsoft.Practices.EnterpriseLibrary.Logging.Database.DLL。   日志:尝试下载新网址   文件:/// C:/Development/Work/EquinoxeAISManagementSystemWorkflow/EquinoxeAISManagementSystemWorkflow.FeedManager/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Logging.Database.EXE。   日志:尝试下载新网址   文件:/// C:/Development/Work/EquinoxeAISManagementSystemWorkflow/EquinoxeAISManagementSystemWorkflow.FeedManager/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Logging.Database/Microsoft.Practices.EnterpriseLibrary.Logging.Database.EXE。   日志:尝试的所有探测URL和   失败。

我已尝试以下方法解决此问题: - 为所有受到重视的EnterpriseLibrary声明将“特定版本”设置为False - 再次使用EnterpriseLibrary配置工具重新创建app.config(并一次又一次:( - 删除所有引用程序集并逐个添加它们。

如果有人有关于如何调试此问题的进一步指示,我将非常感激.....谢谢!

1 个答案:

答案 0 :(得分:1)

我看到三个可能的问题......

  1. 您的应用是x64(C:\Windows\Microsoft.NET\Framework64\),是Microsoft.Practices.EnterpriseLibrary.Logging.Database x86还是x64? (从未尝试这样做,因此我不确定是否可以这样做)
  2. 此文件是否在构建时本地复制?它必须位于C:/Development/Work/[snip]/bin/Debug中,以便融合加载程序找到它。 Fusion不会在每个目录下查找。
  3. 它位于GAC中,但它不在#2中提到的目录中。 Fusion必须首先在安装目录下找到程序集,然后才能探测程序集的GAC,IIRC *。
  4. *此行为取决于使用部分绑定在运行时加载程序集的方式,即不使用程序集的强名称。