Silverlight не может получить сборки ресурсов - PullRequest
1 голос
/ 19 января 2012

Мы используем диспетчер ресурсов .NET для локализации нашего приложения Silverlight и хотим встроить сателлитные сборки для немецкого языка ("de") в файл XAP. Для этого мы установили нейтральный язык «en» и добавили «de» в список поддерживаемых языков в файле csproj. Это прекрасно работает, когда мы строим проект локально. Если мы создадим решение Silverlight с MSBuild (TFS), Silverlight попытается извлечь спутниковые сборки с HTTP-запросами из /ClientBin/de/*.dll вместо того, чтобы помещать эти файлы в XAP (которые существуют). Поскольку веб-сервер возвращает 404 кода ошибки для несуществующих файлов, происходит сбой Silverlight с ошибкой инициализации.

Оказалось, что если мы удалим пользовательскую операцию сборки TFS, манипулируя файлами кода информации о сборке, приложения Silverlight будут работать как положено. Как ни странно, после повторного включения действия скомпилированное приложение XAP все еще работает (проверено на наличие двух разных определений сборки, работающих на отдельных ветвях). Настраиваемое действие управляет атрибутами сборки AssemblyConfiguration, AssemblyCompany, AssemblyProduct, AssemblyCopyright, AssemblyTrademark, AssemblyVersion и AssemblyFileVersion.

Некоторые дополнительные советы:

  • Пользовательское действие изменит файлы информации о сборке до того, как будет выполнена любая компиляция
  • Компиляция управляемых источников с помощью Visual Studio создаст работающий XAP
  • Содержимое файлов XAP (работающих и не работающих) одинаково (почти одинакового размера, без различий в файле манифеста)
  • Администратор ресурсов создается с использованием ResourceManager("Resource", Assembly.GetExecutingAssembly())

Мои вопросы:

  • Почему Silverlight пытается извлечь эти спутниковые сборки из /ClientBin/de/ вместо того, чтобы просто использовать их в файле XAP?
  • Какой тип атрибута в файле сведений о сборке может вызвать такое поведение?
  • Почему повторное включение управления версиями не нарушает XAP снова?

1 Ответ

1 голос
/ 06 февраля 2012

И вот решение: мы используем инструмент под названием «Total Commander» для редактирования файла в сгенерированном XAP, чтобы настроить URL, к которому подключается (универсальный) клиент. Поскольку мы добавили dll для локализации, редактирование XAP с помощью Total Commander приведет к описанному выше поведению. Если мы манипулируем XAP с помощью WinRAR или внутреннего менеджера архивов Windows, все работает как положено.

Редактировать: После сравнения файлов XAP мы обнаружили, что Total Commander использует обратную косую черту (\) для разделения каталогов, тогда как WinRAR и Silverlight Tools используют косую черту (/). Кажется, здесь мы обнаружили скрытую функцию Silverlight; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...