当从另一个项目引用NServiceBus程序集时出现“需要参考”错误

4
我们正在尝试在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. Create a new VB Class Library Project (.NET 3.5)
  2. Add NServiceBus.dll and NServiceBus.Core.dll as References.
  3. Put the following code in Class1.vb:

    Imports NServiceBus.Sagas.Impl
    Class Test
        Public Function Foo() As SagaMessageHandler
            Return Nothing
        End Function
    End Class
    
  4. You should now see the compiler error mentioned above.

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


有什么解决这个问题的想法吗?(是的,我的首选解决方案是切换到C#,但目前不可接受。)


非常奇怪,我也能够在这里复现。您能否拉取源代码并在本地重新构建它? - Chris Haas
是的,我拉下了主干源代码,并使用提供的构建脚本在本地构建了它。遇到了同样的问题。还没有仔细查看构建脚本,看看它是否可能会导致这种情况。 - cwegrzyn
2个回答

3
有一次我猜测这可能与ILMerge有关,然后我发现了这篇帖子,该帖子暗示签名程序集可能是原因。
我下载了NServiceBus主干源代码,打开src/core/NServiceBus.sln,并将解决方案中的每个项目都设置为使用源树根目录中的NServiceBus.snk签名程序集。重新构建NServiceBus后生成的新DLLS修复了原始帖子中的编译器错误。

2

这些项目现在已经在主干和2.0分支上都进行了强名称命名。

希望这能帮到你!


即使使用最新的3.0签名程序集,问题仍然存在。:( - tommed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接