asp.net - form - web application asp net c#
Precompilación de páginas aspx y cshtml, pero dejando las páginas maestras o de diseño actualizables (1)
¿Y si lo hicieras de otra manera? ¿Qué sucede si ''capturó'' sus cambios html y css y luego creó una nueva carpeta o archivo css para esa compañía? (el archivo es el (los) original (es) más sus cambios. Luego, cuando se carga la página maestra, se extrae de la base de datos el archivo o la carpeta que usa la compañía y lo escribe en el css desde el c # de la página maestra).
El proceso sería como:
- Captura sus cambios
- Haga una carpeta y archivos css como los originales pero con sus cambios
- Extraiga de la tabla de la base de datos el archivo css que va a usar (deberá hacer una tabla de asignación de cliente-> archivo css)
- Use la página maestra c # para escribir en el html qué archivo css usar.
En esencia, esto hace que los cambios de css se carguen en tiempo de ejecución según su cliente y no tenga que preocuparse por la compilación.
Utilizamos este proceso con éxito para la piel de diferentes colores. Nuestro sistema de carpetas era como:
- Predeterminado -> Archivos CSS originales
- Tema oscuro -> Original con cambios oscuros
- Tema azul
- Tema rosa etc
No estoy seguro de si lo que busco aquí es alcanzable con la herramienta aspnet_compiler.exe, pero aquí va:
Tenemos un sitio que les permitimos a los usuarios personalizar, permitiéndoles modificar páginas maestras o, mejor dicho, no les permitimos modificarlas directamente, les damos un lenguaje de estilo de "marcado" recortado que pueden usar para modificar el html de esas páginas, de modo que esencialmente pueden "personalizar" el sitio para que se parezca a su propio extremo delantero.
Tengo ganas de intentar optimizar el sitio precompilando las vistas y las páginas aspx. Pero quiero que el diseño y las páginas maestras que usan esas vistas y páginas se mantengan actualizables. Sin embargo, no puedo hacer que eso funcione ...
Digamos que tenemos la siguiente página 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>
Que hace referencia al archivo de página maestra Skin.Master
en la carpeta Skinable
. Skin.Master
necesita ser actualizable. Esto es lo que he intentado:
Si simplemente compilo el sitio usando este comando aspnet_compiler.exe, la página maestra también se compila, y no es actualizable:
C:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_compiler.exe -v / -pd:/SourceFolder d:/CompiledSite
Si EXCLUYO la carpeta skinable (agregando
-x Skinable
al comando) en aspnet_compiler.exe, entonces la carpeta no se copia en la carpeta de salida, pero la página maestra aún se compila en la carpeta bin (es decir, unskin.master.compiled
archivoskin.master.compiled
se genera en la carpeta de compilación). Y cuando copiamos la página maestra en la carpeta de implementación, los cambios en ese archivo se ignoran (solo usamos la página maestra como estaba en el momento de la compilación).Si oculto la carpeta Skinable antes de ejecutar aspnet_compiler (
attrib +hd:/SourceFolder/Skinable
), obtengo el mismo resultado que el anterior (es decir, cuando se excluye a través de la marca -x)Si especifico el indicador -u (Actualizable) al ejecutar aspnet_compiler.exe, bueno, no estoy seguro de cuál es la ventaja de ser honesto, ya que no parece que se compile nada en esa instancia, por lo que la compilación se realiza sobre la marcha Cuando solicitas una página, ¿cuál es el punto ...
Finalmente, si permito la compilación de todo, y luego voy a la carpeta bin y ELIMINAMOS skin.master.compiled, luego cuando solicita una página que usa esa página maestra, aparece el error "El archivo ''Skin.master'' no tiene ha sido precompilado, y no puede ser solicitado "
Sospecho que la referencia a la página maestra es el problema aquí, es decir, si una página hace referencia a una página maestra, esa página maestra DEBE compilarse también si desea compilar la página, pero no estoy seguro. ¿Estoy escondido para nada aquí?