ASP.NET系統專案如何在VS2005與VS2008間順利轉換?

ASP.NET 2.0 如果引用了.net framework3.5後,你也許可能再VS2005與VS2008下同時開發,專案也可能交互使用, 比方說也許你用VS2005開發的專案,後來因為某些原因轉到VS2008下開發,你也可能開發工具引用了ㄧ些組件...後來造成系統無法正常顯示,在修改系統的時候相當困擾..如何解決這些問題我有些心得跟大家分享...

假設你的系統內安裝了.net framework3.5,那表示組件dllㄧ定存在2.0、3.0或3.5,之前比較舊的版本並不會消失,除非你刻意刪除掉,也就是同組件的各種版本都會放在一起,未來如果還有.net framework4.0我相信也是同樣的狀況.
接下來的問題是你利用VS開發工具去引入些組件但是卻有不自覺,其實它都悄悄地去更改你的web.config設定,而導致你的網站出現很多奇怪的問題,像我就常出現
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"

System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"


不一致的情況,其實你也只需要把 Version=1.0.0.0, 全部改為 Version=3.5.0.0 就會正常了..

例如以下的web.config 其實自己手動也可以修改好...

<configSections>
<section name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<section name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions,Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions,Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="ajaxSettings" type="AjaxPro.AjaxSettingsSectionHandler,AjaxPro.2" requirePermission="false" restartOnExternalChanges="true"/>
</configSections>