我可以预编译我的ASP.NET MVC应用程序吗?

13

我尝试对我的ASP.NET MVC应用程序进行预编译,并将其部署到具有通配符映射的IIS6服务器上,但是当渲染局部视图(用户控件)时出现错误。在预编译之前,在我的开发计算机上运行良好。

错误信息如下:

'ListGrid'局部视图无法找到。
已查找以下位置:
~/Views/Initiative/ListGrid.aspx
~/Views/Initiative/ListGrid.ascx
~/Views/Shared/ListGrid.aspx
~/Views/Shared/ListGrid.ascx

我检查了Views\Shared文件夹,发现其中没有该文件,我认为这是正常的,因为它已经被预编译了。但为了测试,我在该文件夹中放了一个名为ListGrid.ascx的空文件,结果却出现以下错误:

'/Views/Shared/ListGrid.ascx'文件未经过预编译,无法请求。

我搜索了谷歌和stackoverflow,但没有找到类似的问题,并且没有得到解决。


我之前问过一个类似的问题:https://dev59.com/JnVD5IYBdhLWcg3wDHDm - Paco
2个回答

16

你可以通过将以下内容放置在项目属性的后期构建操作中来预编译MVC应用程序:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler -p "$(ProjectDir)." -v /$(ProjectName)

使用这种方法编译需要花费更多的时间,但是您可以获得在部署之前检测到某些错误的能力。

如果您在视图中有无效代码或缺少视图,则通过此方法进行编译将失败。


3
尽管您可以预编译MVC网站,但ascx和aspx视图文件不在已编译的dll中,只有.cs文件在其中。您仍然需要部署.aspx和.ascx视图文件。
希望这可以帮助到您。

8
实际上,预编译的网站包含了一切,包括ascx和aspx文件。原始文件仍需以二进制形式存在,以供ASP.NET运行时访问,但它们只是占位符,不包含任何内容。 - Dave Van den Eynde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接