2009-06-15 62 views
0

我有一個使用MVC的幾個不同子網站的Web應用程序。我遇到的問題是兩個子網使用不同的MVC版本。其中一個最近升級爲使用1.0版本,另一個則停留在較早的預覽版本上。ASP.NET MVC版本控制問題

升級的子網站之一至1.0,即使用預覽版本的其他web失敗,出現以下錯誤後:

Could not load type 'System.Web.HttpContextWrapper2' from assembly 'System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 

我懷疑,這個問題是由於這樣的事實,無論是System.Web.Abstractions DLL的1.0版本和預覽版本被標記爲版本3.5.0.0,但實際上包含不同的類。因此,當預覽應用程序引用System.Web.Abstractions時,它將獲取已加載的MVC 1.0版本,而不是位於其bin目錄中的預覽版本。

有什麼辦法可以強制運行時加載程序集兩次,就好像它們是兩個不同的版本,即使它們實際上標有相同的版本號?我正在尋找在我的web配置中使用標籤,但不能完全理解我將如何使用它來做到這一點,或者如果它甚至可以實現我在這裏需要做的事情。

+0

你真的需要兩個並排運行的版本,會不會發現以前的版本照顧yoru問題? – 2009-06-15 15:41:58

+0

我確實需要並行運行兩個版本 - 1.0版本中的突然更改導致代碼針對預覽版本編寫而不再有效。我可以使用預覽版本轉換應用程序使用1.0,但我寧願儘可能避免這樣做。 – 2009-06-15 15:57:47

回答

0

你可以把System.Web.Abstractions.dllSystem.Web.Mvc.dll程序,並與相應的版本System.Web.Routing.dll組件(從MVC預覽和從MVC 1.0) 〜/ bin文件夾中的每個子網站。

更新:

嘗試使用ASP.NET MVC預覽版從您的應用程序的web.config中刪除此:

<system.web> 
    <assemblies> 
     <!--<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />--> 
    </assemblies> 
1

我們遇到了類似的問題。我們的大多數應用程序都使用MVC 3.0。我們正在使用使用MVC 1.0的內容管理系統。我們遇到了兼容性問題,因爲我們試圖引用內容管理系統中的某個應用程序組件。當我們將兩個版本的MVC放入GAC時,這解決了問題。