不确定aspnet_compiler.exe工具是否可以实现我的要求,但是这里是:
我们有一个网站,允许用户通过修改主页面来换肤-或更确切地说,我们不允许用户直接对其进行修改,我们为他们提供了一种缩减的“标记”样式语言,可供他们使用修改这些页面的html,这样它们就可以从本质上“蒙皮”该网站,使其看起来像自己的前端。
我热衷于尝试通过预编译视图和aspx页面来优化网站。但是我希望这些视图和页面使用的布局和母版页面保持可更新。但是,我无法正常工作...
说我们有以下aspx页面:
<%@ Page Title="Hello World" MasterPageFile="~/Skinable/Skin.Master" Language="C#" AutoEventWireup="true" CodeBehind="HelloWorld.aspx.cs" Inherits="Project.HelloWorld" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Content" Runat="server">
Hello World!
</asp:Content>
在Skin.Master
文件夹中引用母版页文件Skinable
。 Skin.Master
需要可更新。这是我尝试过的:
如果我只是使用此aspnet_compiler.exe命令来编译站点, 母版页也被编译,并且不可更新:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v / -p d:\SourceFolder d:\CompiledSite
如果我排除皮肤文件夹(将-x Skinable
添加到
命令)在aspnet_compiler.exe中,则文件夹不会
复制到输出文件夹,但母版页仍编译为
bin文件夹(即skin.master.compiled
文件生成到
构建文件夹)。当我们将母版页复制到
部署文件夹,对该文件的更改将被忽略(它只是使用了
母版页)。
如果在运行aspnet_compiler(attrib
+h d:\SourceFolder\Skinable
)之前隐藏Skinable文件夹,则得到的结果与上述相同(即,通过-x标志排除时)
如果在运行时指定-u标志(可更新) aspnet_compiler.exe,好吧,我不确定这样做的好处是什么 老实说,在这种情况下似乎没有任何编译,所以 当您请求页面时,编译会实时进行,所以 重点...
最后,如果我允许编译所有内容,然后进入 bin文件夹并删除skin.master.compiled,然后在您请求 使用该母版页的页面,您将收到错误消息“文件 'Skin.master'尚未预编译,因此无法请求”
我怀疑此处是对母版页的引用-即,如果某个页面引用了母版页,那么如果您要编译该母版页,则也必须对该母版页进行编译,但是我不确定。我在这里躲藏起来吗?
答案 0 :(得分:0)
如果您以不同的方式去做呢?如果您“捕获”了他们的html和css更改,然后为该公司创建了一个新的css文件夹或文件怎么办? (文件是原始文件及其更改。然后,在加载母版页时,它会从数据库中提取公司使用的文件或文件夹,然后从母版页的c#中将其写入CSS。
过程类似于:
从本质上讲,这将使运行时根据您的CSS更改加载 客户,您不必担心编译。
我们成功地使用了此过程来为不同的颜色设置皮肤。 我们的文件夹系统就像: