3

程序集'dllname.Moles,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = null'使用'System.Web.Mvc,Version = 4.0 .0.0文化=中性公鑰= 31bf3856ad364e35' 具有較高版本比引用的程序集 'System.Web.Mvc,版本= 3.0.0.0,文化=中性公鑰= 31bf3856ad364e35'在VS2010中由Moles創建的程序集在安裝VS2012後引用MVC3和MVC4

甲MVC3溶液靶向的.NET4.0框架,使用Moles框架的單元測試項目,在Visual Studio 2010中完美運行。在此計算機上未安裝MVC4。

在安裝Visual Studio 2012(並強制替換.NET4.5和.NET4.5以及安裝MVC4)後,unittest項目不再在VS2010中編譯,它抱怨給定的錯誤。

當我們檢查程序集時,我們有效地看到它引用了MVC4和MVC3?

  • BoneSoft.CSS,版本= 1.0.0.0,文化=中性公鑰=空
  • iTextSharp的,版本= 5.1.2.0,文化=中性公鑰= 8354ae6d2174ddca
  • Microsoft.ExtendedReflection,版本= 0.94.0.0文化=中性公鑰= 31bf3856ad364e35
  • Microsoft.Moles.Framework,版本= 0.94.0.0文化=中性公鑰= 31bf3856ad364e35
  • mscorlib程序,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089
  • mscorlib程序,版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089
  • NHibernate.Validator,版本= 1.3.1.4000文化=中性公鑰= 70154e18752585bd
  • 系統,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089
  • 系統,版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089
  • System.Core程序,版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089
  • System.Data,版= 4.0.0.0,Culture =中性,PublicKeyToken = b77a5c561934e089
  • Sys tem.Drawing,版本= 2.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a
  • System.Runtime.Caching,版本= 4.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a
  • System.Web程序,版本= 4.0。 0.0,文化=中性公鑰= b03f5f7f11d50a3a
  • System.Web.Mvc,版本= 3.0.0.0,文化=中性公鑰= 31bf3856ad364e35
  • System.Web.Mvc,版本= 4.0.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35
  • System.Xml,Version = 2.0.0.0,Culture = neutral,Pub licKeyToken = b77a5c561934e089

MVC4永遠不會在整個解決方案中引用,但痣的地方認爲它一定是誰引用MVC3一個組件產生一個「痣集」時,被包括在內。

我也有其他組件的組件,他們沒有引用MVC3,並且在編譯時沒有問題。

我已經刪除了項目中的痣組件,重建並重新創建了痣組件:同樣的錯誤。

想法在哪裏搜索問題?

回答

0

當您安裝VS 2012時,它在盒子上安裝了MVC4。 MVC 3無法很好地與MVC 4一起使用SxS。您需要更新MVC 3應用程序以在安裝了MVC 4的機器上工作。
這在MVC 4.0的發行說明中有記錄。請閱讀章節Installing ASP.NET MVC 4 breaks ASP.NET MVC 3 RTM applications。按照setps「必需的更新」。

+1

MVC3解決方案編譯時沒有問題,只有帶有Moles框架的unittest項目沒有編譯。我在web.config文件和項目文件中驗證了建議的更改:其中一些已經提議。是否適應像MVC4的發行說明中提出的所有設置,但沒有運氣,編譯單元測試項目時出現同樣的錯誤。 – evb

+0

這是痣框架特定的問題。我會嘗試從gac文件中刪除System.Web.Mvc v4,作爲解決方法。 – Anand

0

我得到了一個項目類似的錯誤,所以我刪除了對MVC的引用,並重新添加了對MVC 3的引用,然後我才能夠編譯。

望着.csproj的文件,它讀取之前:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>False</Private> 
</Reference> 

後重新添加引用:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> 

因此,它看起來像標籤<SpecificVersion>False</SpecificVersion>又讓項目找對引起版本衝突的較新版本的MVC的引用。

相關問題