¿Cómo se copian los archivos de la estructura de un ensamblaje con referencia a la estructura local
-
13-10-2019 - |
Pregunta
Estoy construyendo una biblioteca que tiene algunas dependencias que no se compilan (ejemplo: archivos javascript y css)
.Lo que me gustaría es tener los archivos dependientes creados automáticamente o copiados a la estructura del proyecto de consumir cuando la biblioteca es de Referencia -. Dinámicamente en tiempo de referencia
A través de mi investigación he encontrado maneras de hacer esto con pre y post de scripts de construcción del proyecto de consumir, pero lo que realmente quiero hacer es lo siguiente:
- En Consumidor , en Agregar referencia a Biblioteca
- código se ejecuta todos los que las copias pertinentes Js * y * .css de estructura de carpetas de la biblioteca a Consumidor estructura de carpetas.
- Si copiar no es acheviable, estaría bien con la ejecución de código para crear los archivos pertinentes en Consumidor .
Una vez más, me gustaría guiones pre evitar y construcción posterior si puedo - al final del día Necesito el consumidor para tener en su lugar el js y css de la biblioteca para que la visualización y la ejecución de obras sin forzar al consumidor para mover manualmente estos archivos.
Gracias por cualquier ayuda ofrecida.
Solución
Como dijo Hans en su comentario: acaba de incrustarlos como recursos en el montaje. Si lo hace, de JavaScript, CSS, y las imágenes es bastante trivial.
- Vaya a las propiedades en el archivo (js / css / images) y la puso a copiar a la acción de salida a Prohibida la reproducción y la Acción de generación en Recurso incrustado
-
En el archivo AssemblyInfo.cs de sus líneas de ensamblaje Agregar proyecto, tales como:
[assembly: WebResource ( "MyAssembly.Javascript.MyJavascript.js", "application / javascript", PerformSubstitution = false)]
-
Para inyectar el código JavaScript en una página (de un control de usuario o lo que encuentra en su montaje) añadir lo siguiente:
cadena de ubicación = Page.ClientScript.GetWebResourceUrl (this.GetType (), "MyAssembly.Javascript.MyJavascript.js");
StringBuilder inicio = new StringBuilder (String.Empty); startup.Append (@ ""); startup.Append ( "");
Page.Header.Controls.Add (nuevo LiteralControl (startup.ToString ()));
Tenga en cuenta el parámetro PerformSubstitution a la directiva WebResource. Esto le permite poner las cosas como lo siguiente en sus archivos CSS incrustados:
.ribbonGroupLeft {
width: 3px;
height: 85px;
background-image: url(<%=WebResource("MyAssembly.images.RibbonGroupLeft.png") %>);
background-repeat: no-repeat;
overflow: hidden;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
Las URL apunta a una imagen situada dentro del conjunto. Al establecer PerformSubstitution a cierto .net establecerá automáticamente la dirección URL a la ubicación correcta.
Como nota al margen, todos los principales proveedores de la biblioteca de control hacen algo en la línea de los anteriores. Funciona muy bien, siempre y cuando se acuerda de hacer el paso 1.