我们正在开发一个DLL,称之为&#34; My.dll&#34;,它需要引用旧版本的.Net Framework DLL(早于应用程序目标)。< / p>
那是:
应用程序(My.dll&#39; s)目标框架= &#34; .Net Framework 4&#34;
我们需要引用 System.Web.Mvc v3.0.0.0 (与外部主机应用程序兼容)
设置应用程序&#39; (My.dll&#39; s)目标框架除4之外的任何东西都会破坏代码。
因此,我们只是将 System.Web.Mvc v3.0.0.0 DLL复制到项目&#39; lib&#39;文件夹并直接添加对该程序集的引用。
Visual Studio显示的引用的MVC程序集的版本是&#34; v3.0.0.0&#34; ...太棒了!
但是,在添加引用之后,项目文件最终会引用&#34; v4.0.0.1&#34; ... WTF!?
SELECT GROUP_CONCAT( `choice` ), `choice_id`, `is_right_choice`
FROM Question_choices
GROUP BY `choice`
令人困惑的是,编译后的My.Dll的清单引用了v3.0.0.0:
然后,当我们部署应用程序时,我们发现(参见下面的Fusion Log Viewer)它从GAC加载System.Web.Mvc并使用v4.0.0.0,即使v3.0.0.0存在于GAC
断开连接发生在哪里?
在编写.CSPROJ文件中的条目时,Visual Studio是否忽略了我给出的版本,只是选择了与应用程序的目标框架相匹配的版本
<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\System.Web.Mvc.dll</HintPath>
</Reference>
答案 0 :(得分:0)
我怀疑Visual Studio正在显示您正在引用的dll的正确版本,但在csproj中有一个来自GAC或其他地方的版本。
这对我有用:
在CsProj中,您现在应该拥有正确的版本。 最后,您可以手动编辑csproj文件并设置正确的版本。