我刚刚将VS 2008项目升级到VS 2010,转换项目但将目标保持为.NET 3.5(已安装SP1)。我的项目在另一台机器上的VS 2008下没有问题。
我添加了对System.Web.Extensions.dll的引用,但我仍然从App_Code文件夹中的代码中收到以下错误:
1)找不到System.Web.Script.Service命名空间。
2)未定义类型'System.Web.Script.Services.ScriptService'。
3)未定义类型'System.Runtime.Serialization.Json.DataContractJsonSerializer'。
任何人都有任何想法可能是什么问题,因为我很难过? :(
答案 0 :(得分:16)
在Visual Studio 2012中,请务必添加System.Web.Extensions
的引用,因为该引用包含System.Web.Script.Serialization
。
答案 1 :(得分:5)
似乎有一个来自Microsoft的错误,其中VS2010中v3.5的Target Framework是GAC的3.0版本!将问题移动到v3.0文件夹的程序集似乎开始解决问题,但有点乱。想想我会等待微软为VS 2010带来正确的解决方案!
http://www.cnblogs.com/dudu/archive/2010/06/24/1764549.html
Google翻译有助于此链接!
从v3.5文件夹复制到v3.0文件夹的程序集的更多细节,作为解决此VS 2010错误的解决方法:
http://forums.asp.net/p/1569744/3942724.aspx
如果有其他人遇到此问题,并希望跟踪/投票通知Microsoft的此错误状态: https://connect.microsoft.com/VisualStudio/feedback/details/570557/targeting-net-framework-3-5-actually-targets-3-0-gac
更新 - 微软对我提出的错误报告发布了以下修复:
要构建一个目标为3.5的网站,请在web.config文件中添加一个编译器标记,就像我在下面粘贴一样,因此语言编译将选择正确版本的vbc.exe。您可以创建一个新的3.5网站,默认的web.config包含您可以引用的那些标记。
<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>
答案 2 :(得分:1)
检查您的web.config程序集 条目。
检查Visual Studio中的.NET Framework target 2010年项目,默认为4.0
检查IIS,确保使用适当的框架 你的网站。新的.NET 4.0安装可以将您的默认框架更改为4.0。
答案 3 :(得分:0)
通过将我的网站目标框架从3.5更改为4.0并再次回到3.5,我解决了类似的问题。
这导致了我的web.config文件的大量添加,这可能使Visual Studio更容易支持我的项目。
我从未“将我的项目升级到Visual Studio 2010”,但这是一个较旧的aspx网站,这可能是第一次使用VS 2010打开。
答案 4 :(得分:0)
通过将我的网站目标框架从3.5更改为4.0并再次回到3.5,我也解决了类似的问题。