2014-10-17 68 views
2

我正在處理一個ASP.NET MVC 3解決方案(在Visual Studio 2010中工作),該解決方案引用System.Web.Mvc中的特定版本(3.0.0.0)項目數量。安全更新後處理對System.Web.Mvc的引用

這樣做是爲了讓解決方案能夠在安裝了更高版本MVC的機器上構建。

我們犧牲品安全更新到MVC昨天(System.Web.Mvc not functioning as expected after Windows Update)公佈,其中System.Web.Mvc DLL版本遞增到3.0.0.1

這可以很容易地固定我的機器上。

我的問題是,如果我更改每個引用System.Web.Mvc的項目以使用3.0.0.1構建,然後部署到GAC中仍具有3.0.0.0的服務器,我的應用程序仍然可以正常工作嗎?

我知道有一些方法可以將MVC DLL作爲部署的一部分,但是我想盡可能少地改變當前的構建/部署過程。

回答

1

嘗試添加下列到<運行>元素在你的web.config

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.1" newVersion="3.0.0.0"/> 
    </dependentAssembly> 
</assemblyBinding> 

沒有測試,但這應該工作。

+0

謝謝 - 你能否詳細說明爲什麼/如何重定向工作? – TonE 2014-10-17 08:36:57

+0

您的項目引用(在.csproj文件中)將指向System.Web.Mvc版本3.0.0.1,因此您的項目將針對新版本進行編譯。但是,針對System.Web.Mvc的所有運行時調用都將嘗試使用DLL的3.0.0.0版。由於這只是一個安全修補程序版本,所以3.0.0.1 DLL中的所有方法簽名等可能與3.0.0.0 DLL中的完全相同,所以在這種情況下,它應該可以正常工作。 – 2014-10-17 08:40:19

+0

使用3.0.0.1版本的DLL更新服務器後會發生什麼? – TonE 2014-10-17 08:45:05