Сведения о вопросе

Fhohir

08:13, 21st August, 2020

Теги

c#   asp.net   ilmerge   webresource    

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

Просмотров: 511   Ответов: 2

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

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

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

Он будет расположен в проекте WebControls, assembly 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



  Сведения об ответе

9090

21:18, 1st August, 2020

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

После построения командной строки для проекта пустышек : "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /keyfile:../../Company.snk /wildcards:True /out:Company.dll Company.Merge.dll компания.*.dll


  Сведения об ответе

qwerty101

12:34, 23rd August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться