在WCF服务应用程序中找不到类型或命名空间名称“var”

时间:2011-03-17 09:53:14

标签: c# .net wcf c#-4.0

当我尝试在WCF服务应用程序中使用“var”时,它给出错误“找不到类型或命名空间名称'var'(您是否缺少using指令或程序集引用?)”

6 个答案:

答案 0 :(得分:62)

如果您尝试在类成员中使用var,则会出现此错误,例如:

public class Foo
{
    var a = 4;
}

var只能在方法中使用,而不能在类,字段或方法签名中使用。

另请参阅:Why no var on fields?

答案 1 :(得分:5)

我想是因为你在c#4.0之前定位了一个框架。尝试转到项目属性并将目标框架设置为4.0

答案 2 :(得分:3)

对于我的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>

答案 3 :(得分:2)

我在这里猜测,但是var可能只用于局部变量(方法内)。

您是否使用它来定义实例变量?

答案 4 :(得分:0)

您应确保为.NET 3.5或更高版本构建服务。之前不支持“var”关键字。

答案 5 :(得分:0)

也许您不小心从一个您不期望的目录中拨打public class AccountController : Controller { public UserManager<YourUserIdentity> UserManager { get; private set; } public SignInManager<YourUserIdentity> SignInManager { get; private set; } public AccountController(UserManager<YourUserIdentity> userManager, SignInManager<YourUserIdentity> signInManager) { UserManager = userManager; SignInManager = signInManager; } public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) { if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.UserName); await UserManager.AddClaimAsync(user, new Claim("your-claim", "your-value")); var signInStatus = await SignInManager.PasswordSignInAsync(user, model.Password, model.RememberMe, lockoutOnFailure: false); if (signInStatus.Succeeded) return RedirectToLocal(returnUrl); ModelState.AddModelError("", "Invalid username or password."); return View(model); } // If we got this far, something failed, redisplay form return View("Index", new LoginPageViewModel() { Login = model }); } } ?我通过使用完整路径运行csc.exe来解决问题:

csc.exe