Frage

Wir versuchen, unsere DLLs für die Bereitstellung zu einer zusammenzuführen, also ILMerge.Fast alles scheint großartig zu funktionieren.Wir haben ein paar Web-Steuerelemente, die Folgendes verwenden ClientScript.RegisterClientScriptResource und diese sind nach der Zusammenführung 404-fähig (diese funktionierten vor der Zusammenführung).

Eines unserer Steuerelemente würde zum Beispiel so aussehen

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

Es würde sich in Project WebControls, Assembly Company.WebControls, befinden.Darunter befinden sich ControlA.cs und ControlA.js.ControlA.js ist als eingebettete Ressource gekennzeichnet.In die AssemblyInfo.cs füge ich Folgendes ein:

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

Wie kann nach der Zusammenführung mit CompanyA.dll diese Webressource ordnungsgemäß referenziert werden?Die ILMerge-Befehlszeile lautet wie folgt (aus dem bin-Verzeichnis nach dem Build): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

War es hilfreich?

Lösung

OK – ich habe es geschafft.Offenbar war die primäre Baugruppe die einzige, deren Baugruppenattribute kopiert wurden.Wenn Copyattrs gesetzt wären, würde der letzte gewinnen, keine Zusammenführung (soweit ich das beurteilen kann).Ich habe ein Dummy-Projekt erstellt, um auf die anderen DLLs zu verweisen, und alle Webressourcen dieser Projekte in die Dummy-Assembly-Informationen aufgenommen. Jetzt werden mehrere Ressourcen aus mehreren Projekten korrekt geladen.

Letzte Post-Build-Befehlszeile für Dummy-Projekt:"C:\Programme\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../Company.snk /wildcards:True /out:Company.dll Company.Merge.dll Company.*.dll

Andere Tipps

Sie müssen /allowMultiple zusammen mit /copyattrs festlegen.Erst dann führt ILMerge die eingebetteten Ressourcen aller Baugruppen zusammen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top