早前一段时间,一位朋友在Q群里面找到我,说它按照《Linux.NET学习手记》的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象。当时费了一番周章才把问题解决。而最近一段时间,群里也有其他的朋友出现相同的问题,随着时间的推移,想必会有越来越多朋友会使用高版本的VS,于是我把当时的情况重现出来,并把解决办法记录下来。
像往常一样,我们创建了一个MVC4的项目。
然后添加了一个视图,默认的那个(/Home/Index),然后,再发布到Linux.NET里面。
然后就出现了如图的这个令人不愉快的页面,我们的Razor找不到视图了。
而事实上,我们是有这个视图的,并且也不存在常见的大小写和权限问题。
由于近期为了体验.NET Nactive,装了个VS2013并打上了Update包,所以我把目光聚焦在了这次的更新当中,不排除更新是系统的一些配置诸如Config或者DLL出现变化而导致Linux.NET的不兼容。
经过一番的排查,我突然发现,VS在发布的地方多了个容易让人忽略的东西(平时折叠起来了)。
正如图中所见的,选项中多出了“在发布期间预编译”这么一个选项。把这个勾去掉,然后重新发布。再次刷新页面:
Razor引擎又恢复正常了,视图被重新找到了。
目前发现VS2013和VS2012 Update2以上 会出现“发布时预编译”这个功能,各位朋友需要多加留意。