【问题标题】:"Could not load file or assembly"/ "or one of its dependencies. The module was expected to contain an assembly manifest."“无法加载文件或程序集”/“或其依赖项之一。该模块应包含程序集清单。”
【发布时间】:2010-01-05 10:46:46
【问题描述】:

我有一个使用 SharpSVN dll 和 NServicebus dll 的 c# 应用程序,它编译得很好,但是当它执行时(在初始化总线时)它会抛出以下错误

无法加载文件或程序集“file:///C:\Repositories\Repo\hooks\SharpSvn-DB44-20-Win32.dll”或其依赖项之一。该模块应包含程序集清单。

我该如何解决上述问题。

提前致谢 苏珊塔

【问题讨论】:

    标签: nservicebus sharpsvn


    【解决方案1】:

    通过使用要扫描的程序集的显式列表配置 NSB,从 NServiceBus 程序集扫描中排除 sharpsvn dll:

    Configure.With("包含消息处理程序的程序集列表")...

    如果您使用 Saga 功能,请确保在列表中包含 NServiceBus.core.dll。

    希望这会有所帮助!

    【讨论】:

    • 我已经配置了三个 dll(NServiceBus.dll,NServiceBus.core.dll,NServiceBus.ObjectBuilder.CastleWindsor.dll) ,然后这个错误正在出现 Type NServiceBus.Unicast.Transport.CompletionMessage was not registered in序列化器。检查它是否出现在要扫描的已配置程序集/类型列表中。请告诉我为什么会出现这个错误?
    • 完成消息存在于核心 dll 中,因此您应该可以使用您提到的 dll:s。尝试使用 typeof(CompletionMessage).Assembly 指定核心程序集,看看是否有帮助?
    • 能否详细说明?
    • 你能把你的初始化代码贴在这里吗? (Configure.With(...) 东西)
    • 我的代码如下:myDllAssembly.SetValue(Assembly.LoadFile(@"..NServiceBus.dll"), 0); myDllAssembly.SetValue(Assembly.LoadFile(@"..NServiceBus.Core.dll"),1); myDllAssembly.SetValue(Assembly.LoadFile(@"..NServiceBus.ObjectBuilder.CastleWindsor.dll"), 2); Bus = NServiceBus.Configure.With(myDllAssembly).SpringBuilder().MsmqSubscriptionStorage().XmlSerializer().MsmqTransport().IsTransactional(true).PurgeOnStartup(false).UnicastBus().ImpersonateSender(false).CreateBus()。开始();
    【解决方案2】:

    苏珊塔,

    我们最近提交了一个额外的 API,它允许您指定要加载的程序集,这可以让您更轻松,如下所示:

    Configure.With(AllAssemblies.Except("SharpSvn-DB44-20-Win32.dll"))... // 其余的配置

    【讨论】:

      【解决方案3】:

      SharpSvn-DB44-20-Win32.dll 是 SharpSvn.dll 的可选辅助 dll。它仅包含非托管代码。

      它支持直接访问文件系统上的 BDB 存储库。如果您只使用 fsfs (file://) 和/或远程存储库,则不需要此 DLL。

      SASL dll 也是可选的,但是当您想使用 svn:// 存储库时需要它。

      【讨论】:

      • 如果我在我的项目中只使用sharpsvn dll或nServicebus dll则不会出现问题,但是当我同时使用SharpSvn和Nservicebus时(仅执行时间,而不是编译时间)上述错误抛出。请给一个解决方案。
      【解决方案4】:

      使用以下总线配置可以解决问题。

      Bus = NServiceBus.Configure.With(typeof(IMessage).Assembly, typeof(CompletionMessage).Assembly) .SpringBuilder().MsmqSubscriptionStorage().XmlSerializer().MsmqTransport() .IsTransactional(true).PurgeOnStartup(false).UnicastBus().ImpersonateSender(false) .LoadMessageHandlers().CreateBus().Start();

      感谢安德烈亚斯

      【讨论】:

        【解决方案5】:

        我不确定这是否对你有帮助,但我偶然发现了这个帖子:

        http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/9ad17869-63cc-4529-bfaf-9099db500e0d

        似乎有些人在构建/运行同名程序集时看到了这个错误,例如:

        SomeAssembly.exe
        SomeAssembly.dll
        

        这是否适用于您的情况?

        【讨论】:

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