Pergunta

Estamos tentando mesclar nossas DLLs em uma para implantação, portanto, ILMerge.Quase tudo parece funcionar muito bem.Temos alguns controles da web que usam ClientScript.RegisterClientScriptResource e estes são 404 após a mesclagem (funcionavam antes da mesclagem).

Por exemplo, um dos nossos controles seria parecido com

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");                
    }      
  }
}

Ele estaria localizado no Projeto WebControls, assembly Company.WebControls.Abaixo estariam ControlA.cs e ControlA.js.ControlA.js está marcado como um recurso incorporado.No AssemblyInfo.cs incluo o seguinte:

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

Depois que isso for mesclado em CompanyA.dll, qual é a maneira correta de fazer referência a esse recurso da web?A linha de comando do ILMerge é a seguinte (do diretório bin após a construção): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

Foi útil?

Solução

OK - eu fiz isso funcionar.Parece que a montagem primária foi a única cujos atributos de montagem estavam sendo copiados.Com copyattrs definido, o último venceria, não uma mesclagem (até onde eu sei).Criei um projeto fictício para fazer referência a outras DLLs e incluí todos os recursos da web desses projetos nas informações de montagem fictícia - agora vários recursos de vários projetos estão sendo carregados corretamente.

Linha de comando final pós-construção para projeto fictício:"C:\Arquivos de programas\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../Company.snk /wildcards:True /out:Company.dll Company.Merge.dll Company.*.dll

Outras dicas

Você precisa definir /allowMultiple junto com /copyattrs.Só então o ILMerge mesclará os recursos incorporados de todos os assemblies.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top