Прекомпиляция ASP.NET не может объединить один пользовательский элемент управления - PullRequest
1 голос
/ 01 декабря 2009

У меня довольно большой сторонний проект ASP.NET WebSite, который я прекомпилирую и объединяю, используя цели MSBuild и Microsoft Web Deployment. Я не прекомпилирую файлы .aspx и .ascx, только файлы кода.

На этапе предварительной компиляции пользовательский элемент управления компилируется в сборку, которая не объединяется с окончательной сборкой WebSite.dll. Окончательный вывод содержит:

  • WebSite.dll
  • App_Web_selectsinglepath.ascx.73690ebc.dll

Все остальные пользовательские элементы управления были скомпилированы в сборки с именами, такими как App_Web_abcdefgh.dll, и эти сборки были объединены в WebSIte.dll, только этот один элемент управления не был.

Что может быть причиной такого поведения?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

У меня была похожая проблема при попытке использовать aspnet_compile и aspnet_merge из командной строки для проекта веб-приложения. Два элемента управления всегда будут иметь именованные сборки вместо App_Web_[hex].dll, и после слияния не смогут загрузиться.

В моем случае я смог добавить флаг -fixednames к вызову aspnet_compile, который сгенерировал все управляющие библиотеки как App_Web_[control_name].[hex].dll, что сделало их все видимыми для aspnet_merge, что удалило загрузку сборки ошибка.

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

0 голосов
/ 01 декабря 2009

Пользовательские элементы управления скомпилированы в отдельные сборки, поскольку это позволяет рассматривать пользовательские элементы управления как веб-элементы управления. Вы можете использовать утилиту ILMerge для объединения нескольких сборок в одну. Вот хорошая страница, объясняющая это.

...