代码之家  ›  专栏  ›  技术社区  ›  Jim B

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

  •  4
  • Jim B  · 技术社区  · 14 年前

    我们刚刚从VS2008升级到了VS2010。

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

    “/”应用程序中的服务器错误。 编译错误描述:一个 编译期间出错 of a resource required to service this 请求。请回顾以下内容 特定错误详细信息并修改 适当的源代码。

    编译器错误消息: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的assembly部分中:

    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   zinglon    14 年前

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

        2
  •  3
  •   Tim Lloyd    14 年前

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

        3
  •  0
  •   VoodooChild    14 年前

    确保目标框架设置为3.5或更高 另外,再次检查在应用程序根文件夹中是否有一个好的web.config文件(复制推荐的web.config并重命名它)。