Domanda

Stiamo tentando di unire le nostre DLL in una sola per la distribuzione, quindi ILMerge.Quasi tutto sembra funzionare alla grande.Abbiamo un paio di controlli Web che utilizzano ClientScript.RegisterClientScriptResource e questi sono 404 dopo la fusione (funzionavano prima della fusione).

Ad esempio, uno dei nostri controlli sarebbe simile

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

Si troverebbe in Project WebControls, assembly Company.WebControls.Sotto ci sarebbero ControlA.cs e ControlA.js.ControlA.js è contrassegnato come risorsa incorporata.In AssemblyInfo.cs includo quanto segue:

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

Dopo che questo è stato unito a CompanyA.dll, qual è il modo corretto per fare riferimento a questa risorsa Web?La riga di comando di ILMerge è la seguente (dalla directory bin dopo la compilazione): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

È stato utile?

Soluzione

OK, ho capito che funziona.Sembra che l'assembly primario fosse l'unico i cui attributi di assembly venivano copiati.Con i copyattrs impostati, vincerebbe l'ultimo, non una fusione (per quanto ne so).Ho creato un progetto fittizio per fare riferimento alle altre DLL e ho incluso tutte le risorse Web di tali progetti nelle informazioni sull'assembly fittizio: ora più risorse da più progetti vengono tutte caricate correttamente.

Riga di comando finale post-compilazione per il progetto fittizio:"C:\Programmi\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../Company.snk /wildcards:True /out:Company.dll Company.Merge.dll Company.*.dll

Altri suggerimenti

È necessario impostare /allowMultiple insieme a /copyattrs.Solo allora ILMerge unirà le risorse incorporate da tutti gli assembly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top