4

我们正在尝试编写一个在 VB.NET 环境中使用 NServiceBus 库的应用程序。我们被类似以下的错误所困扰:

包含实现的接口“NServiceBus.IMessageHandler`1”的程序集“NServiceBus,版本=2.0.0.1071,Culture=neutral,PublicKeyToken=9fc386479f8a226c”所需的参考。将一个添加到您的项目中。

我们的项目已经包含对来自同一 NServiceBus 2.0 RC2 发行版的 NServiceBus.dll 和 NServiceBus.Core.dll 的引用。


重现步骤:

  1. 创建一个新的 VB 类库项目 (.NET 3.5)
  2. 添加 NServiceBus.dll 和 NServiceBus.Core.dll 作为参考。
  3. 将以下代码放入 Class1.vb 中:

    Imports NServiceBus.Sagas.Impl
    Class Test
        Public Function Foo() As SagaMessageHandler
            Return Nothing
        End Function
    End Class
    
  4. 您现在应该看到上面提到的编译器错误。

用 C# 编写的相同项目没有编译错误。


关于如何解决这个问题的任何想法?(而且,是的,我首选的解决方案是切换到 C#,但不,目前这不是一个可以接受的解决方案。)

4

2 回答 2

3

预感这是一个与 ILMerge 相关的问题,我发现这篇文章表明程序集签名可能是负责任的。

我下载了 NServiceBus 主干源,打开 src/core/NServiceBus.sln,并设置解决方案中的每个项目,以使用源树根目录中的 NServiceBus.snk 对程序集进行签名。重建 NServiceBus 后生成的新 DLLS 修复了我原来帖子中的编译器错误。

于 2010-02-03T19:52:00.230 回答
2

这些项目现在在主干和 2.0 分支上都具有强大的名称。

希望这可以帮助!

于 2010-03-19T14:48:13.297 回答