2009-04-08 21 views
10

Estoy intentando exportar una biblioteca de control en .dll para que otros desarrolladores de la oficina la consuman.WebResource.axd en blanco o no encontrado

La solución que se ve creados originales como esta:

Solución 1:
- Mri.Controls (Biblioteca de clases)
- Mri.FmTool (aplicación web)

referencias Mri.FmTool Mri.Controles.

Dentro de Mri.Controls, tengo algunos javascript WebResources. Mri.FmTool parece leer WebResources muy bien, todos mis recursos web javascript aparecen como deberían cuando se ejecuta la aplicación web Mri.FmTool.

lo tanto, ahora yo estaba tratando de crear una solución sencilla para consumir Mri.FmTool

Solución 2:
- Mri.ConsumerTest (aplicación Web)

Tomé las últimas Mri.Controls .dll y lo agregó como referencia a la aplicación Mri.ConsumerTest. Todos los controles de Mri.Controls parecen funcionar dentro de Mri.ConsumerTest. Intellisense está funcionando, compila, sin problemas.

Sin embargo, al ejecutarlo, la mayoría de los archivos WebResource.axd están vacíos, simplemente en blanco. Un archivo WebResource.axd no está en blanco, simplemente dice "Este recurso no se puede encontrar".

Estas son las propiedades de los archivos javascript dentro de la ventana Propiedades:
ampliar la acción: "Recurso incrustado"
Copiar al Directorio de salida: "Copiar siempre"

Qué paso me estoy perdiendo?

+0

Gracias por hacer esta pregunta! No tuve la * misma * pregunta, pero estaba teniendo un problema similar. Sin embargo, no estaba al tanto de la propiedad "Crear acción: recurso incrustado". ¡Gracias! – Matt

Respuesta

2

Me di cuenta de que mis archivos CSS de WebResource se cargaban correctamente, pero Javascript no se cargaba en WebResource en la nueva solución.

Por lo tanto, en lugar de utilizar el System.Web.UI. ClientScriptManager usado para registrar WebResources, cambié a usar System.Web.UI. ScriptManager. Ahora los archivos están saliendo de ScriptManager.axd (en lugar de WebResource.axd). Esto pareció solucionar el problema.

Código antiguo antes Fix:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

El fragmento de código anterior utiliza System.Web.UI.ClientScriptManager

Nuevo Código después Fix:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

El código El fragmento anterior utiliza System.Web.UI.ScriptManager

Según tengo entendido, ClientScriptManager se introdujo en 2.0. Creo que ScriptManager es la nueva forma mejorada de 3.5 de administrar scripts que tiene mucha más funcionalidad.

/shrug

+0

No estoy seguro de seguir, ¿puedes publicar un pequeño fragmento de código de lo que quieres decir? –

+0

fragmentos de código agregados – taco

+0

La parte relevante es una función * static *: 'ScriptManager.RegisterClientScriptSource()' - me tomó un tiempo antes de que me diera cuenta. – vdboor

2

¿Los recursos se establecen para formar parte de la DLL?

Abra la solución Mri.Controls & vea las propiedades de los archivos de recursos de javascript.
Creo que es donde podría estar el problema.

+1

Mis archivos javascript tienen las siguientes propiedades en Mri.Controls - Build Action: Embedded Resource; Copiar al directorio de salida: Copiar siempre – taco

+1

THanx. Este fue mi problema Proyecto antiguo resucitado: por alguna razón, todos los archivos de recursos se restablecieron al Contenido en lugar del Recurso incrustado. –

3

Probablemente falte el atributo [assembly: WebResource ("YourNameSpace.YourFile.js", "text/javascript")]. WebResource.axd necesita ese atributo. Puede consultar el artículo this KB para obtener información adicional sobre el asunto.

+0

Ya tuve [assembly: WebResource ("Mri.Controls.Resources.Scripts.Core.js", "text/javascript")] en mi información de ensamblaje .... – taco