升级到Visual Studio 2010后使用'var'时出错

时间:2010-06-21 17:24:34

标签: c# web-applications visual-studio-2010

我们刚刚从VS2008升级到VS2010。

我们的项目编制得很好;但是当我们运行Web应用程序时,打开Default.aspx时会出现以下错误:

  '/'应用程序中的服务器错误。   编译错误说明:An   编译期间发生错误   为此提供服务所需的资源   请求。请查看以下内容   具体的错误细节和修改你的   适当的源代码。

     

编译器错误消息:CS0246:   类型或命名空间名称'var'不能   被发现(你错过了使用   指令或程序集引用?)

打开页面并将鼠标移到'var'声明上,VS2010正确识别出它的类型是RegEx。

我认为在升级过程中我们的web.config或machine.config中可能会发生一些时髦的事情。

之前有其他人遇到过这个问题吗?任何帮助将不胜感激,希望它可以节省我一些时间潜入这些文件。

修改 这是代码的相关部分,它正在爆炸:

Line 10:    protected void valSearchFreeText_ServerValidate(object source, ServerValidateEventArgs args)
Line 11:    {
Line 12:        var url = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase);
Line 13:        var html = new Regex(@"[<,>]", RegexOptions.IgnoreCase);
Line 14:        args.IsValid = !html.IsMatch(args.Value) && !url.IsMatch(args.Value);

我不相信.NET 4.0是原因;我们只从VS2008升级到VS2010;我们没有从.NET 3.5迁移到.NET 4.0

我将仔细检查ASP.NET开发服务器与IIS,并在几分钟后回复结果。它绝对是从开发服务器抛出来的。

编辑2 这是从开发服务器和IIS抛出的。 System.Xml.Linq也包含在我们的web.config的程序集部分中:

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

3 个答案:

答案 0 :(得分:5)

检查您的web.config文件中的configuration/system.codedom/compilers/compiler节点。应该有一个providerOption子节点,用于确定要使用的编译器版本。它应该看起来像<providerOption name="CompilerVersion" value="v3.5"/>。听起来你的是2.0而不是3.5。

答案 1 :(得分:3)

IIS中的关联应用程序池是否设置为使用.Net 4框架?

答案 2 :(得分:0)

确保目标框架设置为3.5或更高 另外,请仔细检查Application根文件夹中是否有一个好的web.config文件(复制推荐的web.config并重命名。)