Локализация пользовательских элементов управления в распространяемой сборке

Я пытаюсь создать распространяемую сборку, содержащую несколько настраиваемых элементов управления (CommonControls). Моя среда: MSVC 2010, ASP.NET (WebForms) .NET 2.0 / 3.0 / 3.5

Проблема: скомпилировать все с помощью проекта веб-развертывания не получится, если я локализую CommonControls с помощью App_GlobalResources.

Вот как я создаю сборку CommonControls:

Я использую веб-сайт, содержащий файлы .ascx и .ascx.cs:

Обозреватель решений

и проект веб-развертывания со следующими настройками:

Настройки проекта веб-развертывания (CommonControls)

Это создаст CommonControls.dll. Эта сборка должна использоваться в другом веб-приложении ASP.NET следующим образом:

web.config: web.config

Первая (незначительная) проблема: добавление CommonControls в качестве зависимости не приведет к автоматическому копированию вспомогательных сборок для языков. Копирование их вручную на правильный путь вывода, похоже, работает (для ОТЛАДКИ).

Основная проблема: веб-приложение Main также локализовано с помощью App_GlobalResources и создано с помощью проекта веб-развертывания:

Настройки проекта веб-развертывания (основные)

Этот процесс сборки завершится неудачно с

ASPNETCOMPILER: ошибка ASPRUNTIME: ссылка на объект не установлена ​​на экземпляр объекта.

Оба проекта развертывания создают файл с именем «bin \ App_GlobalResources.compiled», и я предполагаю, что эти 2 файла не могут мирно сосуществовать в одном выходном проекте.

Есть ли какое-нибудь элегантное решение для локализации как CommonContols, так и Main с использованием встроенной локализации ASP.NET?

Примечание. Проект, над которым я работаю, должен быть совместим с Apache + Mono, поэтому для правильной работы мои настройки проекта (скриншоты выше) должны быть точно такими же (все другие варианты уже протестированы).


person Tobias81    schedule 01.06.2015    source источник


Ответы (1)


Я починил это. Это (вероятно) было вызвано устаревшими сборками в папке Bin, используемой WDP (кажется, неплохо время от времени вручную очищать эту папку).

Я также скопировал файлы из CommonControls \ Bin в окончательный результат (через событие предварительной сборки), что не является необходимым и приводит к поломке всего (вспомогательные сборки для переводов автоматически копируются MSVC).

Хотя моя проблема + решение может быть не очень полезным для других, это, по крайней мере, учебник, как создать повторно распространяемую сборку с некоторыми настраиваемыми элементами управления из группы пользовательских элементов управления.

Примечания:

  • Все выходные данные сборки настраиваемого элемента управления должны быть объединены. В противном случае у нас получится 2 файла "App_GlobalResources.dll" (работать не будет)
  • Работает только с «Проектом веб-сайта», а не с «Веб-приложением».
  • Пользовательские элементы управления должны использовать теги «CodeFile / Inherit», а не устаревший тег «CodeBehind» (избавьтесь от всех этих файлов «.designer.cs»!)
  • Пользовательские элементы управления должны иметь тег «ClassName», который отличается от имени элемента управления (я добавил «Internal» и переименовал классы в коде программной части).
  • Встроенные ресурсы (изображения, скрипты ...) напрямую не поддерживаются в «проекте веб-сайта». Я использую для этого дополнительную LIB
person Tobias81    schedule 10.06.2015