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

问题描述 投票:0回答:3

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

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

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

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

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

那么,是什么导致了这种完全奇怪的行为呢?

wcf vsto
3个回答
1
投票
<% @ServiceHost Language="C#" 
    Debug="true" Service="MyCompany.Communications.VSTOService" 
    Factory = "MyProject.Communications.IocServiceHostFactory" 
    CodeBehind="VSTOService.cs"%>

移动

@
使用 ServiceHost 作为
<% @ServiceHost
进行签名,希望您的错误得到解决


1
投票

确保在创建 *.svc 文件时不会创建 *.svc.cs 文件。如果是,请将其删除并从 @ServiceHost 中删除 CodeBehind 属性


0
投票

我看到我的 svc 文件是这样的

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

不知道锚标记是如何插入到 servicehost 标记下方的,这导致了问题。 去掉锚标记()后,解决了“命名空间不能直接包含字段或方法等成员”的问题

© www.soinside.com 2019 - 2024. All rights reserved.