Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error using 'var' after upgrading to Visual Studio 2010

We just recently upgraded from VS2008 to VS2010.

Our project compiles fine; but when we go to run the Web Application, we get the following error when opening Default.aspx:

Server Error in '/' Application. Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0246: The type or namespace name 'var' could not be found (are you missing a using directive or an assembly reference?)

Opening up the page, and mousing over the 'var' declaration, VS2010 correctly recognizes that it's type is a RegEx.

I'm thinking something funky might have happened in either our web.config or machine.config during the upgrade.

Anybody else run into this problem before? Any help would be greatly appreciated, hopefully it can save me some time diving into these files.

EDIT: Here's the relevent section of code that's blowing up:

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);

I don't believe that .NET 4.0 is the cause; we only upgraded from VS2008 to VS2010; we did not migrate from .NET 3.5 to .NET 4.0

I will double check on the ASP.NET Development Server vs. IIS and post back in a few minutes with the results from that. It's definitely being thrown from the Development Server.

Edit 2 This is being thrown from both the Development Server, and IIS. System.Xml.Linq is also included in the assemblies section of our web.config:

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
like image 397
Jim B Avatar asked Feb 26 '23 19:02

Jim B


2 Answers

Check your web.config file for the configuration/system.codedom/compilers/compiler node. There should be a providerOption child node that determines the compiler version to be used. It ought to look like <providerOption name="CompilerVersion" value="v3.5"/>. It sounds like yours says 2.0 instead of 3.5.

like image 196
zinglon Avatar answered Mar 05 '23 14:03

zinglon


Is the associated application pool in IIS set to use the .Net 4 framework?

like image 44
Tim Lloyd Avatar answered Mar 05 '23 16:03

Tim Lloyd