【发布时间】:2011-03-17 09:53:13
【问题描述】:
当我尝试在 WCF 服务应用程序中使用“var”时,出现错误“找不到类型或命名空间名称 'var'(您是否缺少 using 指令或程序集引用?)”
【问题讨论】:
-
你能给我们看一些代码/配置吗?我们无法读懂你的想法(或你的屏幕),真的....
当我尝试在 WCF 服务应用程序中使用“var”时,出现错误“找不到类型或命名空间名称 'var'(您是否缺少 using 指令或程序集引用?)”
【问题讨论】:
如果您尝试在类成员中使用var,则会收到此错误,例如:
public class Foo
{
var a = 4;
}
var 只能在方法内部使用,不能在类、字段或方法签名中使用。
【讨论】:
a是什么类型。它可能是int,但也可能是任何其他隐式转换为int 的类,例如double 或MyCustomClass 或SomeEnum。
int 文字。 var a = 4; 定义明确,可以在方法体中按预期工作。只是不能在方法之外使用。
我想这是因为您的目标是 c#4.0 之前的框架。尝试转到您的项目属性并将目标框架设置为 4.0
【讨论】:
对于我的 ASP.NET 3.5 项目,我必须确保我的 web.config 文件中有 3.5 框架编译器设置,例如:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
【讨论】:
我在这里大胆猜测,但是:var 只能用于局部变量(在方法内部)。
你是在用它来定义实例变量吗?
【讨论】:
您应该确保您正在为 .NET 3.5 或更高版本构建服务。以前不支持“var”关键字。
【讨论】:
也许您不小心从一个您不期望的目录中调用了csc.exe?我通过使用完整路径运行csc.exe 解决了这个问题:
set csc=c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
%csc% try.cs
rem This was wrong:
set path=%path%;c:\Windows\Microsoft.NET\Framework\v4.0.30319
csc.exe
rem This shows csc version, which turned out to be from Framework 2.0.
【讨论】: