Вопрос

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

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

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, сборочной компании.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

Это было полезно?

Решение

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

Окончательная командная строка после сборки для фиктивного проекта:"C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /ключевой файл: ../../Company.snk /подстановочные знаки: True /out:Company.dll Company.Merge.dll Company.*.dll

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top