Я работаю с приложением как для настольных компьютеров Windows, так и для Windows, потенциально я буду добавлять Windows Phone в будущем. Я использую большую часть своей логики в библиотеке и создаю другой графический интерфейс для разных платформ.Совместное использование ресурсов строки между настольным компьютером Windows и приложением Windows Store
Я хочу локализовать свое приложение и хочу поделиться потоковыми ресурсами между платформами. Но как мне это сделать?
Для рабочего стола Windows наиболее распространенный подход, по-видимому, использует файлы resx. Вот небольшой пример:
http://compositeextensions.codeplex.com/discussions/52910
Для хранения приложений файлов RESW Windows, вместо этого используются, вот пример того, что:
http://msdn.microsoft.com/en-us/library/windows/apps/hh965326.aspx
Оба эти решения конкретной платформы, которые я дон 't like :-(Я действительно хочу иметь всю свою строку в одном файле/языке и быть в состоянии использовать ее на всех платформах. Есть ли какое-либо решение для этого?
Update 17 Feb 2014: Насколько я понимаю, файлы resx и resw находятся в одном формате. То, что отсутствует в приложении для хранилища Windows, заключается в том, что для файла resw не создается файл класса. Если бы я мог получить такой файл, мои проблемы были бы решены. Затем я мог бы разместить экземпляр этого класса в моей модели представления и получить доступ ко всему тексту через свойства.
Файл класса, сгенерированный в приложении WPF, почти работает. Проблема заключается в том, что строка выглядит примерно так:
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ResxTest.Properties.StringTest", typeof(StringTest).Assembly);
Чтобы получить это скомпилировать мне нужно, чтобы изменить его к этому:
global::System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ResxTest.Properties.StringTest", typeof(StringTest).GetTypeInfo().Assembly);
Но ResxTest.Properties.StringTest ресурс не может быть загружен в мое приложение Windows Store. По какой-то причине мне нужно переименовать свой ресурс в Resource.resw и загрузить его с именем «Ресурс». Я пробовал все имена, но это единственное, что работает. Использование имени MyApplication.MyResource никогда не работает.
Я не уверен, что я на правильном пути. Я почти так отчаянно хочу, чтобы я сделал свое собственное решение: я конвертировал XML-файл со всеми строками, которые мне нужны для огромного класса со свойствами, которые я мог бы использовать, чтобы получить всю строку без каких-либо файлов ресурсов. Но я думаю, что это уродливо и мошенничать, поэтому я надеюсь, что кто-то может дать мне лучшую идею :-).
Обновление 24 фев 2014: Я был неправ! Все отлично работает с портативной библиотекой классов. Если я использую это, я могу поместить экземпляр автоматически сгенерированного класса C# в мою модель представления и получить доступ ко всем строкам от этого объекта.
Но если я использую обычную библиотеку, то в Windows Store приложение не работает должным образом (WPF в порядке). Я попытался скопировать все файлы в библиотеку классов хранилища Windows из рабочей библиотеки переносных классов. Когда я пытаюсь создать экземпляр автогенерируемой файла Я всегда получаю:
Исключения типа «System.Resources.MissingManifestResourceException» произошло в mscorlib.dll, но не было обработано в пользовательском коде
Дополнительного информация: Не удается загрузить ресурсы для файла ресурсов «MetroLib.StringResources»в пакете ...
Очень раздражает, так как я с помощью экспресс-выпуски Visual Studio, где портативная библиотека классов не доступна. Так, вероятно, я буду развивать свое собственное решение для создания классов из файла ресурсов (которые также дает мне некоторые другие преимущества). Но мне все еще интересно, что я делаю неправильно.
Спасибо. Я уже использую переносимую библиотеку классов, я вложил всю свою логику. Но у меня нет ресурсов для правильной работы. Я могу добавить файл resx и использовать его в Windows Desktop, но у меня нет этого для работы в Windows Store. Или я просто не знаю, как правильно писать синтаксис :-). Есть идеи? Будет ли это работать и с несколькими языками? – PEK
вы выставляете методы для возврата ресурсов в портативную библиотеку. Просто вызовите эти методы портативной библиотеки из своего приложения для магазина Windows. Здесь приведен пример для локализованных ресурсов. http://msdn.microsoft.com/en-us/library/vstudio/hh871422(v=vs.110).aspx – Praggie
Это все хорошо, если я просто хочу получить строки в коде. Но могу ли я использовать это в xaml-файлах? В настольном приложении я мог бы написать что-то вроде