Pregunta

Estamos intentando fusionar nuestras DLL en una para su implementación, por lo tanto ILMerge.Casi todo parece funcionar muy bien.Tenemos un par de controles web que utilizan ClientScript.RegisterClientScriptResource y estos son 404 después de la fusión (funcionaron antes de la fusión).

Por ejemplo, uno de nuestros controles se vería así

namespace Company.WebControls
{
  public class ControlA: CompositeControl, INamingContainer
  {
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        this.Page.ClientScript.RegisterClientScriptResource(typeof(ControlA), "Company.WebControls.ControlA.js");                
    }      
  }
}

Estaría ubicado en Project WebControls, ensambladora Company.WebControls.Debajo estaría ControlA.cs y ControlA.js.ControlA.js está marcado como un recurso integrado.En AssemblyInfo.cs incluyo lo siguiente:

[assembly: System.Web.UI.WebResource("Company.WebControls.ControlA.js", "application/x-javascript")]

Después de fusionarlo en CompanyA.dll, ¿cuál es la forma correcta de hacer referencia a este recurso web?La línea de comando ILMerge es la siguiente (desde el directorio bin después de la compilación): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

¿Fue útil?

Solución

Bien, tengo esto funcionando.Parece que el ensamblaje principal era el único cuyos atributos de ensamblaje se estaban copiando.Con copyattrs configurados, el último en entrar ganaría, no una fusión (hasta donde yo sé).Creé un proyecto ficticio para hacer referencia a las otras DLL e incluí todos los recursos web de esos proyectos en la información del ensamblaje ficticio; ahora se cargan correctamente varios recursos de varios proyectos.

Línea de comando final posterior a la compilación para el proyecto ficticio:"C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../Company.snk /wildcards:True /out:Company.dll Company.Merge.dll Company.*.dll

Otros consejos

Debe configurar /allowMultiple junto con /copyattrs.Sólo entonces ILMerge fusionará los recursos integrados de todos los ensamblados.

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