2012-10-15 115 views
1

我有一个使用System.Web.Mvc版本3和System.Web.WebPages版本1的类库。安装Visual Studio 2012(MVC版本4 )我在Visual Studio 2010中编译该类库的一个问题:安装MVC 4后MVC 3 System.Web.WebPages程序集引用错误4

Assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' uses 'System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll 

在这个项目中,我不希望使用MVC 4呢。

+1

为了减轻疼痛,使用nuget安装mvc 4 :) – Aviatrix

回答

3

我在文本编辑器打开的.csproj文件,发现下面一行:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll</HintPath> 
</Reference> 

我注意到HintPath不存在我的机器上(Windows 7的32位),所以很明显的Visual Studio自动采用最新版本(可能在GAC中)。我从项目引用中删除了System.Web.Mvc,并通过浏览到正确的路径再次添加它。 .csproj现在看起来像这样:

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\..\..\..\..\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll</HintPath> 
</Reference> 

还要确保Version参数设置为3.0.0.0。

+0

我遇到了一个非常类似的问题。我的提示路径是查看程序文件而不是程序文件(x86),即使在更新之后,该项目仍然试图使用4.0版本,即使该参考文件明确地告诉它使用3.0。然后,我将SpecificVersion属性设置为True,并强制项目使用3.0。 –