为什么aspnet_compiler成功使用可更新标志,否则失败?

时间:2013-02-23 21:26:07

标签: asp.net aspnet-compiler

我们正在调查预编译网站以改善网站启动时间的可行性。我们试图避免的是当用户访问网站时调用csc.exe。在csc.exe运行时,IIS将不会为任何其他HTTP请求提供服务。这限制了我们可以向我们的站点发布新二进制文件的频率和速度,因为它需要花费数小时来部署代码并预热我们服务器场中的每个Web服务器。

我已经aspnet_compiler.exe以可更新模式编译网站(即使用-u标志),但经过测试,看起来IIS仍在调用csc.exe进行编译控制/页。

> aspnet_compiler -v / -p F:\Projects\Website\webroot -u F:\BuildOutput\Website 

所以,我尝试没有-u标志,现在我收到了编译错误:

> aspnet_compiler -v / -p F:\Projects\Website\webroot F:\BuildOutput\Website
/Tool/Controls/ToolCustomDateRangePicker.ascx(8): error ASPPARSE: Unknown server 
tag 'SharedControls:DateRangePicker'.

当我打开/Tool/Controls/ToolCustomDateRantPicker.ascx时,它正确引用SharedControls:DateRangePicker

<%@ Register TagPrefix="SharedControls" TagName="DateRangePicker" 
             Src="../../common/Controls/DateRangePicker.ascx" %>

是什么给出的? 为什么aspnet_compiler在可更新时正确编译我的网站但在编译时失败,因此其不可更新?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题 - 似乎使用-u选项实际上并没有编译内部代码 - 所以它需要在运行时编译。 从:MSDN

  

使用此选项时,.aspx文件中的代码块(即代码   位于脚本元素中或位于&lt;%和%&gt;之间标签)不是   编译。因此,如果这些代码块中存在编译错误,   您将仅在运行时看到错误,因为.aspx文件是   完全编译然后。使用此选项通常是不安全的   对于依赖.aspx文件中的代码块的站点。