除非.svc文件在VS 2010中打开,否则编译错误

时间:2011-03-04 16:55:35

标签: wcf compiler-construction vsto

我有一个非常简单的.svc文件(VSTOService.svc),用于在VSTO中提供的一些Web服务:

<%@ ServiceHost Language="C#" 
    Debug="true" Service="MyCompany.Communications.VSTOService" 
    Factory = "MyProject.Communications.IocServiceHostFactory" 
    CodeBehind="VSTOService.cs"%>

此文件位于Communications项目中,该项目是我的解决方案中的12个项目之一。只要 该文件在VS源代码编辑器中打开,整个解决方案编译得很好。但是,如果文件已关闭,则会出现编译错误。

当我自己编译Communications项目时,我遇到了同样的问题,有两个编译错误: 逐字说明符后的关键字,标识符或字符串:@
命名空间不能直接包含诸如字段或方法

之类的成员

显然,我没有在.svc文件中指定名称空间,但为了以防万一,我还检查了项目中的两个类。他们很好。我还尝试删除@和“ServiceHost”之间的空格,但VS坚持在保存文件时将其重新放入。 (当我的软件/硬件让我沮丧时,我讨厌它!)

那么,是什么造成了这种奇怪的行为?

3 个答案:

答案 0 :(得分:1)

<% @ServiceHost Language="C#" 
    Debug="true" Service="MyCompany.Communications.VSTOService" 
    Factory = "MyProject.Communications.IocServiceHostFactory" 
    CodeBehind="VSTOService.cs"%>

@标记为Service <% @ServiceHost,并希望您的错误得到解决

答案 1 :(得分:1)

确保在创建* .svc文件时不创建* .svc.cs文件。如果是,删除它并从@ServiceHost

中删除CodeBehind属性

答案 2 :(得分:0)

我看到我的svc文件就像

<%@ ServiceHost Language="C#" Debug="true" Service="MessageProcessor.Async" %>
<a href="Msg.svc">Msg.svc</a>

不知道锚标记是如何插入servicehost标记下面的,这导致了问题。 删除锚标记()后,它修复了“命名空间不能直接包含诸如字段或方法之类的成员”的问题