从其他项目引用NServiceBus程序集时出现“引用必需”错误

时间:2010-02-03 16:45:56

标签: vb.net assemblies nservicebus

我们正在尝试编写一个在VB.NET环境中使用NServiceBus库的应用程序。我们一直受到类似于以下错误的阻碍:

  

程序集'NServiceBus,Version = 2.0.0.1071,Culture = neutral,PublicKeyToken = 9fc386479f8a226c'所需的引用包含已实现的接口'NServiceBus.IMessageHandler`1'。在项目中添加一个。

我们的项目已经包含来自同一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. 您现在应该看到上面提到的编译器错误。
  5. 用C#编写的相同项目没有编译错误。


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

2 个答案:

答案 0 :(得分:3)

预感到这是与ILMerge相关的问题,我找到了this post suggesting that assembly signing might be responsible

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

答案 1 :(得分:2)

现在项目在trunk和2.0分支上都很强大。

希望这有帮助!