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


70

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

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

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

过去工作正常。昨天,我在项目设置(部分信任,完全信任,部署设置等)方面发挥了很多作用,现在,每次启动客户端时,我都会看到以下消息框:

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

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

我已找到有关此问题的文章,但该解决方案不适用于我的情况。有任何想法吗?

Answers:


119

总是这样。您搜索了2个小时,最终最终在SO上发帖,然后5分钟后,您找到了答案。

在未定义的项目的属性的WCF选项选项卡中ServiceContract有一个未标记为“在同一解决方案中调试另一个项目时启动WCF服务主机”的复选框。

我不知道如何首先检查它。

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


1
Visual Studio 2010中的位置在哪里?
joncodo

3
@乔纳森:我敢打赌,你不是在看正确的项目的属性。您需要选择定义合同的项目;不是实现它的人,也不是调用它的人。
布兰恩

谢谢布兰恩,你是对的。它在2010
joncodo

我看到了同样的问题,并且定义合同的项目没有WCF选项选项卡。真令人
气愤

1
这解决了我的问题。我认为这是因为我在与实施它不同的项目中定义了服务。
puddinman13 2015年

11

万一其他人正在寻找答案,则可能导致此错误的另一个原因是,如果您碰巧App.config在项目中有一个文件,而该文件是具有<system.serviceModel>部分的类库。

我将服务代码移出了一个项目,该项目是另一个项目的可执行文件,但不小心留下了旧App.config文件。我的新项目是通过编程方式配置并启动WCF的控制台应用程序,但是由于旧App.config文件位于引用的程序集中,因此即使调试控制台应用程序,我也会得到该对话框。

由于我没有意识到VS调试器会检查所有引用的程序集是否已配置WCF服务,因此花了大约12个小时来跟踪此问题。


7

要确定有此问题的项目,请在项目文件中找到字符串3D9AD99F-2412-4246-B90B-4EAA41C64699。

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

然后关闭项目选项“在同一解决方案中调试另一个项目时,WCF选项/启动WCF服务主机”


1
尽管此解决方案可能会解决某些问题,但至少在vs2015中,它会在右键单击WCF项目时从上下文菜单中删除“发布” ...
Ricardo Appleton

1
是的,这将帮助我们找到错误地检查了@Brann指出的“ ...时启动WCF服务主机”的项目。我正在使用以下命令来查找具有设置的项目:c:\ MyProjects> findstr / s / m“ 3D9AD99F-2412-4246-B90B-4EAA41C64699” * .csproj
wcb1

4

一些博客说,这可能是由于从另一个分支复制项目(覆盖了GUID)而发生的,所以只需按照本博客中的说明删除它们即可


从VS2015移除de Guid之后,项目无效
Hugo

1

此错误也可能是由于配置文件中的服务名称错误引起的:

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

检查您的配置文件,并确保服务名称正确。


1

旧线程。只需从“选项”中的“调试”部分删除所有命令行参数即可。那帮助了我。


1

我也经历了同样的问题,并花了数小时来摆脱这个特定的错误。最终,我确实找到了解决之道。

遇到此特定问题时,您尝试以管理员身份运行服务器和客户端应用程序,并更改项目的WPF属性

单击项目的WPF属性时,将找到一个生成选项。在build选项中,有一个名为PLATFORM TARGET的选项,您可以在其中将平台目标更改为x86。另请注意,对于x84,您需要将其设置为x84

现在,从控制台运行项目,即转到保存项目的文件夹,并在客户端的bin中,找到一个调试文件夹,您将在其中获得控制台应用程序。您现在应该能够成功运行该应用程序。


0

由于此消息似乎有多种原因,因此添加了另一个解决方案。从项目文件的ProjectTypeGuids标记中删除以下GUID可解决此问题。

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.