如何让aspnet编译器处理包含包含文件的页面

时间:2009-12-12 00:20:16

标签: msbuild build server-side-includes aspnet-compiler

我有一个Web应用程序,它位于我公司的共享托管平台上。该平台具有全局页眉/页脚代码,平台上的所有应用程序都使用包含文件。我无法改变头文件的结构以及它们如何被消耗 - 这是由另一个群体决定的。我有一个没有安装IIS的构建服务器。我试图在构建过程中使用aspnet_compiler.exe来生成预编译的网站文件以供部署。

但是,当构建运行时,我会收到如下错误:

/Company/Controls/Header.ascx(7):错误ASPPARSE:无法映射路径'/sites/header.inc'。

Header.ascx控件在HTML中包含此服务器端:

<! - #include virtual =“/ sites / header.inc” - >

在我的本地计算机上,我在IIS中创建了一个名为“sites”的虚拟目录,指向全局标头代码(我也将其复制到本地计算机)。在托管环境的IIS中存在相同的“站点”虚拟。我真的想避免在构建机器上安装IIS,因为它是一个共享的构建机器,我没有任何人错误地将IIS依赖项工作到他们的代码中。构建机器不需要有IIS。

在构建期间获取aspnet_compiler.exe生成的预编译站点文件而不安装IIS的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

Microsoft有一个非常简单的示例,说明如何替换include语句......

http://support.microsoft.com/kb/306575

查看错误的路径,您似乎已经在使用某种全局用户控件,我猜这是一个被其他应用程序或语言重用的文件,所以我建议想出一个更自定义的版本有错误处理等因为它正在映射驱动器上工作,但基本答案是你需要读取文件并在Render事件期间将其输出到流。

答案 1 :(得分:0)

不要使用服务器端包含。它们是古老的技术,在大多数现代化的场所都是残疾人。

我建议您改为创建.ascx文件来替换每个.inc文件,而是使用它们。

答案 2 :(得分:0)

试试这个:

<!-- #include virtual="~/sites/header.inc" -->

〜是“Web应用程序的根目录”的快捷方式。