在Windows桌面和Windows应用商店之间共享字符串资源

 白白加黑黑99_889 发布于 2023-01-31 12:29

我正在使用Windows桌面和Windows商店的应用程序,我可能会在将来添加Windows Phone.我在库中拥有大部分逻辑,并为不同平台创建不同的GUI.

我想本地化我的应用程序,并希望在平台之间共享字符串资源.但是我该怎么做?

对于Windows桌面,最常见的方法似乎是使用resx文件.这是一个简短的例子:

http://compositeextensions.codeplex.com/discussions/52910

对于Windows商店应用程序使用resw文件,这是一个例子:

http://msdn.microsoft.com/en-us/library/windows/apps/hh965326.aspx

这两个解决方案都是特定于平台的,我不喜欢:-(.我真的希望将我的所有字符串都放在一个文件/语言中,并且能够在所有平台上使用它.对此有什么解决方案吗?

2014年2月17日更新:据我所知,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);

但是无法在我的Windows应用商店应用程序中加载资源ResxTest.Properties.StringTest.出于某种原因,我需要将我的资源重命名为Resource.resw并使用名称"Resource"加载它.我尝试了所有类型的名称,但这是唯一有效的名称.使用名称MyApplication.MyResource永远不会工作.

我不确定我是否走在正确的轨道上.我几乎是如此绝望,我将自己的解决方案转换为我需要的所有字符串的XML文件到一个巨大的类,我可以用来获取没有任何资源文件的所有字符串.但我认为那是丑陋和欺骗所以我希望有人能给我一个更好的主意:-).

2014年2月24日更新:我错了!使用Portable类库可以很好地工作.如果我使用它,我可以在我的视图模型中放置一个自动生成的C#类的实例,并访问该对象的所有字符串.

但是,如果我使用普通的库,Windows Store应用程序中的东西不能正常工作(WPF很好).我试图从一个可工作的类库中将所有文件复制到Windows商店类库.当我尝试创建自动生成的文件的实例时,我总是得到:

mscorlib.dll中出现"System.Resources.MissingManifestResourceException"类型的异常,但未在用户代码中处理

附加信息:无法为包中的资源文件"MetroLib.StringResources"加载资源...

非常烦人,因为我使用的是Visual Studio的快速版本,其中没有可移植的类库.所以我可能会开发自己的解决方案来从资源文件生成类(这也给了我一些其他的好处).但我仍然很好奇我做错了什么.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有