ILMerge и веб-ресурсы - PullRequest
       26

ILMerge и веб-ресурсы

4 голосов
/ 21 августа 2008

Мы пытаемся объединить наши DLL в одну для развертывания, таким образом, ILMerge. Кажется, почти все работает отлично. У нас есть пара веб-элементов управления, которые используют ClientScript.RegisterClientScriptResource, и они выполняются после слияния (они работали до слияния).

Например, один из наших элементов управления будет выглядеть как

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

Он будет находиться в Project WebControls, сборка Company.WebControls. Под ним будут ControlA.cs и ControlA.js. ControlA.js помечен как встроенный ресурс. В AssemblyInfo.cs я включаю следующее:

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

После того, как это объединено с CompanyA.dll, как правильно ссылаться на этот веб-ресурс? Командная строка ILMerge выглядит следующим образом (из каталога bin после сборки): "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../CompanySK.snk /wildcards:True /copyattrs:True /out:Company.dll Company.*.dll

Ответы [ 2 ]

4 голосов
/ 21 августа 2008

ОК - у меня это работает. Похоже, что первичная сборка была единственной, чьи атрибуты сборки копировались. При установленном copyattrs победит последний, а не слияние (насколько я могу судить). Я создал фиктивный проект для ссылки на другие библиотеки DLL и включил все веб-ресурсы из этих проектов в информацию о фиктивной сборке - теперь все ресурсы из нескольких проектов загружаются правильно.

Финальная командная строка после сборки для фиктивного проекта: "C: \ Program Files \ Microsoft \ ILMerge \ ILMerge.exe" /keyfile:../../Company.snk / wildcards: True /out:Company.dll Company.Merge.dll Company. *. Dll

0 голосов
/ 20 марта 2013

Вам нужно установить / разрешить множественные вместе с / copyattrs. Только тогда ILMerge объединит встроенные ресурсы из всех сборок.

...