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

时间:2009-02-19 09:36:24

标签: .net visual-studio-2008 wcf debugging

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

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

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

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

  

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

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

我找到a post on this problem,但解决方案不适用于我的情况。 有任何想法吗?

9 个答案:

答案 0 :(得分:116)

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

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

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

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

答案 1 :(得分:11)

以防万一其他人正在寻找答案,如果您的项目中的App.config文件恰好是<system.serviceModel>类,那么此错误的另一个原因可能是App.config

我将服务代码移出了一个项目,该项目是一个可执行文件到另一个项目但却意外地遗留了旧的App.config文件。我的新项目是一个以编程方式配置并启动了WCF的控制台应用程序,但由于旧的{{1}}文件位于引用的程序集中,即使在调试控制台应用程序时,我也会得到一个神秘的对话框。

由于我没有意识到VS调试器检查所有已配置WCF服务的App.config引用的程序集,所以

大约需要12个小时来跟踪这个。

答案 2 :(得分:7)

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

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

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

答案 3 :(得分:4)

有些博客说,可能是因为从不同的分支复制项目,而是覆盖了GUIDe ...所以只需删除它们,如this blog.中所述

答案 4 :(得分:1)

我也遇到了同样的问题,并搜索了几个小时来摆脱这个特殊的错误。最后我确实找到了解决方法。

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

单击项目的WPF属性时,您将找到构建选项。在构建选项中,有一个名为 PLATFORM TARGET 的选项,您可以在其中将平台目标更改为 x86 。另请注意,如果是 x84 ,则需要将其设置为 x84

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

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:1)

旧线程。只需从Options中的Debug部分删除任何命令行参数即可。这帮助了我。

答案 7 :(得分:0)

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

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>

答案 8 :(得分:0)

在我的例子中,问题是,因为一个普通的类库项目(由 WCF 服务库引用)在它的 .csproj 文件中有这个:

<ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
        <WcfProjectProperties>
          <AutoStart>True</AutoStart>
        </WcfProjectProperties>
      </FlavorProperties>
    </VisualStudio>
  </ProjectExtensions>

将其更改为 False 解决了问题。 这个答案已经存在,但请确保您检查了所有项目,而不仅仅是 WCF 服务库。