2013-10-21 63 views
8

最近幾個月我一直在研究mvc4 web應用程序。當我在nuget中運行更新包以確保我擁有最新版本的庫時,一切都很順利。MVC4應用程序試圖引用更新版本的System.Web.WebPages.Razor問題

現在,當我嘗試它告訴我,它得到錯誤 Could not load file or assembly 'System.Web.WebPages.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)

我檢查了我的web.config和我packages.config無處的應用程序來查看什麼我在引用System.Web.WebPages.Razor, Version=3.0.0.0

我添加了一個dependentAssembly塊到我的web.config與版本2.0.0.0

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 

,並確保在我的意見目錄中的web.config文件還規定V2.0.0.0

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
</sectionGroup> 

我也確保在我的引用中引用的版本是2.0.0.0。我嘗試刪除它並閱讀它。我試圖確保服務器安裝了最新版本的.net框架。

我已經在服務器和本地測試了這個,並得到相同的錯誤信息。

本地我在錯誤日誌LOG: Post-policy reference: System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35中看到這個但我無法找到任何信息是什麼造成的。

我正在開發它在Visual Studio 2012溢價。

任何人有任何想法?

+1

你的一個NuGet包可能引用它。 – SLaks

+0

您的目標是框架4.0還是4.5?如果你的項目是4.0,而更新後的軟件包使用4.5,你有兩個選擇:降級你的nuget或升級你的框架到4.5 –

+0

我的目標是4.5。我已回滾到以前的更改集,並且所有內容都可以正常工作。但是我害怕現在更新我的依賴關係。 – wmelon

回答

12

我檢查了我的web.config和我packages.config無處我是引用System.Web.WebPages.Razor,版本= 3.0.0.0

那是你的問題。我幾次遇到類似的問題。儘管如此,它主要發生在一個解決方案中處理多個項目時;我不確定這是否適用於您的情況。儘管如此,問題歸結爲實際項目引用已被「升級」,但是您的web.config和packages.config 而不是引用了該升級包。如果你進入你的項目引用和查看Razor參考的屬性,我會打賭美元在那裏說3.0.0.0。您可以刪除引用並重新添加引用,方法是瀏覽到較低版本的軟件包的bin目錄或完全升級它。

就像我說的,當你升級一個項目而不是另一個時,這通常發生在多項目解決方案中。修復它的最簡單方法是管理整個解決方案的nuget包。那麼你可能會看到Razor的多個列表,其中一個被檢查一個或多個項目,但不是一些,反之亦然。刪除較早版本的Razor(取消選中相關項目)並應用。然後回到新版本的Razor並將其應用於所有缺失的項目。

+0

我剛剛在我的項目的一個單獨的實例中試過,以確保它可以工作,並解決了我的問題。謝謝! – wmelon

3

我有一個相同的問題,我的WCF服務沒有工作。解決方案是從我的BIN文件夾中刪除System.Web.Mvc.dll。

0

對我而言,我所要做的就是將'特定版本'從False更改爲True,並開始工作。

+0

爲什麼你設置這個? – nerijus

+0

我發佈這個答案已經有一段時間了,但我很確定它是System.Web.WebPages.Razor – rocktheartsm4l

2

我有同樣的問題,除了當經歷克里斯普拉特的回答中描述的步驟時,System.Web.Websites.Razor仍然顯示版本2.0.0.0,即使我剛剛經歷了更新它的過程到NuGet 3.0.0.0。

什麼最終修復它爲我被卸載MVC包的NuGet和重新安裝它(並因此重新安裝其依賴關係:System.Web.Websites和System.Web.Razor)

0

右鍵單擊裝配(在References中)和其內容菜單上選擇Properties以在Visual Studio的Properties選項卡上查看其屬性。在其尋找一個複製本地屬性,並確保其設置爲True。

相關問題