如何摆脱VS2008中的“目标程序集不包含服务types”错误消息?

我有一个客户端/服务器wcf应用程序

我的可执行文件没有定义任何ServiceContract ,它甚至没有对System.ServiceModel的引用( 而是引用了包含到服务器的连接逻辑的程序集

我有另一个程序集,它是由我的EXE引用的,它包含一个ServiceContract

它曾经工作得很好。 昨天,我在项目设置( 部分信任,完全信任,部署设置等等)上玩了很多,现在,每次启动我的客户端时,都会出现以下消息框:

微软WCF服务主机
目标程序集不包含服务types。
您可能需要调整此程序集的代码访问安全性策略。

然后VS冻结1分钟,最终让我像往常一样debugging我的程序。

我在这个问题上find了一个post ,但是这个解决scheme并不适用于我的情况。 有任何想法吗?

总是这样。 你search2个小时,你最终会在SO上发帖,5分钟后,你find答案。

在定义ServiceContract的项目的属性的WCF Options选项卡中, 有一个checkbox标记为“在debugging同一个解决scheme中的另一个项目时启动WCF服务主机”,我没有选中它。

我不知道它是如何被检查的。

无论如何,这解决了我的问题。 请参阅此项目设置的MSDN参考 。

要确定项目中存在这个问题,请在项目文件中findstring3D9AD99F-2412-4246-B90B-4EAA41C64699。

示例: <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

然后closures项目选项“WCF选项/在同一个解决scheme中debugging另一个项目时启动WCF服务主机”

为了防止其他人正在寻找答案,这个错误的另一个原因可能是,如果您恰好在具有<system.serviceModel>部分的类库的项目中有App.config文件。

我将服务代码从一个可执行文件的项目移出到不同的项目,但意外地离开了旧的App.config文件。 我的新项目,这是一个控制台应用程序编程configuration和启动WCF,但因为旧的App.config文件是在引用的程序集,即使在debugging控制台应用程序,我会得到那个神秘的对话框。

花了大约12个小时来跟踪这一个,因为我没有意识到VSdebugging器检查所有引用程序集的App.configconfiguration了WCF服务。

有些博客说,它可能会发生,因为从不同的分支复制项目,覆盖GUID …所以只需删除它们,如本博客中所述。

我也遇到了同样的问题,并花费了数小时才摆脱这个特殊的错误。 最后我find了一条出路。

当遇到此特定问题时,您尝试以pipe理员身份运行您的服务器和客户端应用程序,并更改项目的WPF属性 。 当你点击项目的WPF属性时,你会发现一个构build选项。在构build选项中,有一个选项叫做** PLATFORM TARGET **,因为你将平台目标改为x86。 另外请注意,如果是x84,则需要将其设置为x84。

现在从CONSOLE运行你的项目 ,即去你的项目保存的文件夹,并在客户端的bin,你会发现一个文件夹debugging,你会得到您的控制台应用程序 。 运行应用程序,你会得到成功!

这个错误也可能是由您的configuration文件中错误的服务名称造成的:

 <system.serviceModel> <services> <service name="MyServiceLibrary.WrongServiceName"> ... 

检查你的configuration文件,并确保服务名称是正确的。

老线程。 从“选项”中的“debugging”部分删除任何命令行参数。 这帮助了我。

伟大的工作麸:

在定义ServiceContract的项目的属性的WCF Options选项卡中,有一个checkbox标记为“在debugging同一个解决scheme中的另一个项目时启动WCF服务主机”,我没有选中它。