این پروژه بدون مشکل در VS 2010 کامپایل میشود اگر فایل sln آن اندکی ویرایش شده و Format Version آن 11 شود.
سپس یک نکته: اگر حین کامپایل این پروژه به خطای زیر برخوردید (خصوصا در VS2010 البته):
Assembly 'Iris.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
uses 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
which has a higher version than referenced assembly
'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
این خطا مربوط است به تنظیم زیر:
<MvcBuildViews>true</MvcBuildViews>
از این جهت که یک سری از وابستگیهای این پروژه هنوز از MVC3 استفاده میکنند مانند:
Reference: System.Web.Mvc
4.0.0.0 by CaptchaMvc
3.0.0.0 by Elmah.Mvc
4.0.0.0 by Iris.DomainClasses
4.0.0.0 by Iris.Model
4.0.0.0 by Iris.Web
3.0.0.0 by Iris.Web
3.0.0.0 by LowercaseRoutesMVC
3.0.0.0 by LowercaseRoutesMVC4
3.0.0.0 by MiniProfiler
3.0.0.0 by MvcSiteMapProvider
3.0.0.0 by T4MVCExtensions
این لیست توسط برنامه
AsmSpy تولید شده. (شماره نگارشهای این لیست متناظر هستند با شماره نگارش System.Web.Mvc استفاده شده در اسمبلی متناظر)
راه حل:
وب کانفیگ را باز کنید و چند سطر ذیل را به مدخل compilation اضافه نمائید:
<compilation debug="true" targetFramework="4.0" >
<assemblies>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
</assemblies>
</compilation>
به علاوه قسمت assemblyBinding آن نیز، به نحو زیر نیاز به اصلاح دارد. فرقی هم نمیکند که از چه نگارشی استفاده میکنید (باید به MVC4 ارتقاء داده شود):
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.3.0" newVersion="3.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>