我们刚刚从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"/>
答案 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并重命名。)