2014-01-20 59 views
0

有一個解決方案與多個項目,其中之一是使用RazorEngine(這取決於System.Web.Razor 3.0.0.0),另一個是ASP.NET MVC 4項目,它使用System.Web.Razor 2.0.0.0。在一個解決方案中使用2個不同的Razor版本

所有的工作都很好,直到我開始使用我的MVC項目中第一個項目的類。然後我得到這個錯誤:

{"Could not load file or assembly 'System.Web.Razor, Version=3.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. (Exception from HRESULT: 
0x80131040)":"System.Web.Razor, Version=3.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35"} 

有什麼辦法可以同時使用這兩個版本?將整個解決方案升級到Razor 3並不是一種選擇,因爲它打破了一切。

回答

1

由於.NET不支持將同一程序集的多個版本加載到任何應用程序域,因此它不會在同一個應用程序池中運行。有了一些詭計,你可能能夠使用兩個獨立的虛擬目錄工作,一個託管舊的解決方案,一個託管新的解決方案。

只要您的應用程序不依賴會話狀態,可能是最簡單的工作。只要你確定兩個應用程序都配置了the same MachineKeys。這將是一種「網絡農場部署」。

如果您使用會話狀態,您可能需要configure session to be stored out-of-process in the state service or in SQL Server

+0

謝謝,我想我會重新考慮將整個項目升級到Razor v3。 – Arnthor

相關問題