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.

¿Fue útil?

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.

  1. 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
  2. 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)]

  3. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top