2010-11-22 58 views
0

我有一个WCF Web服务项目,说FooService.vbproj与FooService.svc端点。它的实现在一个独立的项目Foo.vbproj中,Foo.vb类实现了IFooService服务契约和其他文件。 FooService具有对Foo的项目引用。 FooService在本地托管在IIS中。依赖项目构建打破WCF服务

当我构建FooService时,它会编译Foo项目,然后编译FooService项目,它的作品正常工作;在浏览器中的http://localhost/Foo/FooService.svc为我提供了端点信息页面。但如果我建立只Foo孤独,然后我浏览器访问http://localhost/Foo/FooService.svc,我得到了一个黄色的死亡屏幕,与“未找到方法:'Foo.Bar Foo.IFooService.GetFizz(System.Guid)'。下面,详细

原来这是复制旧版本Foo.dll到FooService接口的bin文件夹中。在这情况下是从哪里来的?

如何解决任何想法?应该不是服务保持“第一“新的Foo.dll,使端点仍然工作?

全堆栈跟踪:

[MissingMethodException: Method not found: 'Foo.Bar Foo.IFooService.GetFizz(System. 
     System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0 
     System.Reflection.Assembly.GetType(String name, Boolean throwOnError) +36 
     System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +174 
     MyCo.Infrastructure.MultipleBindingHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +994 
     System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +11666348 
     System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42 
     System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479 

回答

0

原来在Foo中通过另一个引用对Foo.dll进行了循环间接引用。尽管如此,仍然不确定为什么它会将dll复制到未构建的项目中。

重要的是,当您有一个循环引用时,Visual Studio和/或msbuild会表现异常。