转自 http://blog.darkthread.net/post-2011-07-08-deploy-asp-net-mvc3-bin.aspx
ASP.NET MVC Application在执行时,预设会引用注册在GAC的System.Mvc.dll等程式库,但如果要部署的主机没安装ASP.NET MVC,就会产生Could not load file or assembly 'System .Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'的错误讯息。
最简单的解决方法是在目的主机上安装ASP.NET MVC 3 ,但若基于某些理由(主机有很机车的软体安装原则、你曾抢了主机管理员的女友而心有嫌隙...等)无法在主机安装ASP.NET MVC 3,也可透过将必要DLL直接部署在BIN目录下解决。
找到Phil Haack写的MVC 2 手动部署提示 ,Scott Hanselman也有一篇专谈MVC 3 Razor部分的额外部署需求 ,索性把两篇的资料汇整在一起,经实测可行后,做个笔记: (虽然依Hanselman的说法, 用XCOPY部署很逊 ,在此决定引用KISS法则 ,所以...)
在
已安装ASP.NET MVC的机器找到以下档案(32位元OS则在C:\Program Files (x86)\Microsoft
ASP.NET目录),把它们Copy到部署机器的BIN目录下就OK啰! (注意: 主机IIS要安装SP.NET
4.0,网站也要设定使用ASP.NET 4.0)
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies
- System.Web.Helpers.dll
- System.Web.Razor.dll
- System.Web.WebPages.dll
- System.Web.WebPages.Razor.dll
- System.Web.WebPages.Deployment.dll
- Microsoft.Web.Infrastructure.dll
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies
- System.Web.Mvc.dll
(Phil文章中提到的System.Web.Abstractions.dll, System.Web.Extensions.dll, System.Web.Routing.dll在.NET Framework 4.0已属内建)
在部署主机的ASP.NET MVC 3的网站程式BIN目录补上这些档案,就可以顺利运作啰!