2012-01-19 2 views
1

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

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

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

+0

Хорошая уловка, спасибо;) – tomasK

Смежные вопросы