2015-11-11 86 views
0

我们遇到了一个用Xamarin加载Mac资源的问题。我们有一个名为Resource1.resx的资源 文件。从以下代码加载此资源 文件中的一个字符串时失败。请参考附件样本来创建此问题。 你能否给一些建议加载资源?Mac中的MonoDevelop,ResourceManager无法从资源文件中读取值

如果您需要更多信息,请让我知道。请检查(在MainWindows.cs)的 代码如下:

partial void loadResourceButtonClicked(MonoMac.Foundation.NSObject sender){ 
    try{ 
     var b = Resources1.ResourceManager; 
     var name = b.GetString("Name1"); 
     resultLabel.StringValue = name; 
    } 
    catch { 
     resultLabel.StringValue = "Resource load failed."; 
    } 
} 

PS.We附上the test project,请你检查一下。

谢谢。

回答

1

你的“隐藏”例外:

找不到适合指定区域性或 中性文化的任何资源。在编译时确保 “MacResourceTest.Resources1.resources”正确地嵌入或链接到程序集“MacResourceTest”中,或者 所有需要的附属程序集都是可加载的并且完全由 签名。

在异常消息的关键阶段是“确保XXXX正确嵌入或链接到程序集”。

快速查看您的项目和.resx文件被错误地标记为构建动作BundleResource。 OSX/iOS BundleResource通常用于二进制,xml,文本等。但不是.resx文件,因为它们是通过System.Resources.ResourceManager产生的,需要以特定方式(主要由于文化本地化)添加到CIL程序集中。

1)标志.resx文件为EmbeddedResource

2)如果您要“隐藏”的异常,并提供一个“用户友好”的消息的Build Action,包括在控制台中的实际异常消息调试消息,日志记录,某处,等...

3)在发布问题到StackOverflow,请张贴实际的异常消息/调用堆栈。