Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find System.Web.Script.Service namespace error after upgrading to Visual studio 2010

I've just upgraded a VS 2008 project to VS 2010, converting the project but keeping the target as .NET 3.5 (SP1 is installed). My project worked without issue under VS 2008 on another machine.

I've added references to System.Web.Extensions.dll but I'm still getting the following errors from code in the App_Code folder:

1) Cannot find System.Web.Script.Service namespace.

2) Type 'System.Web.Script.Services.ScriptService' is not defined.

3) Type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' is not defined.

Anyone have any ideas what the problem might be as I'm pretty stumped? :(

like image 307
Gavin Avatar asked Jun 16 '10 12:06

Gavin


2 Answers

In Visual Studio 2012, be sure to add reference for System.Web.Extensions as that is the one that holds System.Web.Script.Serialization.

like image 106
Ian Davis Avatar answered Sep 22 '22 13:09

Ian Davis


Seems there's a bug from Microsoft where Target Framework for v3.5 in VS2010 is v3.0 of the GAC! Moving assemblies with issue to v3.0 folder seems to start resolving issues, but a bit messy. Think I'll wait for Microsoft to bring out a proper fix for VS 2010!

http://www.cnblogs.com/dudu/archive/2010/06/24/1764549.html

Google translate helps with this link!

More detail of assemblies copied to v3.0 folder from v3.5 folder as a work-around to this VS 2010 bug:

http://forums.asp.net/p/1569744/3942724.aspx

If anyone else is encountering this issue and wants to track / vote up the status of this bug with Microsoft: https://connect.microsoft.com/VisualStudio/feedback/details/570557/targeting-net-framework-3-5-actually-targets-3-0-gac

Update - Microsoft posted the following fix to the bug report I raised:

To build a web site targetting to 3.5, please add a compiler tag in your web.config file like I paste below, so language compilation will pick up the right version of vbc.exe. You can create a new 3.5 web site, and the default web.config has those tags you can reference.

<system.codedom>
  <compilers>
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <providerOption name="CompilerVersion" value="v3.5"/>
      <providerOption name="OptionInfer" value="true"/>
      <providerOption name="WarnAsError" value="false"/>
    </compiler>
  </compilers>
</system.codedom>
like image 31
Gavin Avatar answered Sep 19 '22 13:09

Gavin