在Mac中使用MonoDevelop,ResourceManager无法从资源文件中读取值

时间:2015-11-11 06:52:37

标签: c# macos monodevelop

我们遇到了一个用Xamarin加载Mac资源的问题。我们有一个资源 文件名为Resource1.resx。从此资源加载一个字符串时失败 以下代码的文件。请参阅附件示例以创建此问题。 你能提出加载资源的建议吗?

如果您需要更多信息,请告诉我们。请检查 代码(在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。我们已附上the test project,请检查一下。

感谢。

1 个答案:

答案 0 :(得分:1)

你的隐藏'例外:

  

无法找到适合指定文化的任何资源或   中性文化。确保   " MacResourceTest.Resources1.resources"是正确的   嵌入或链接到汇编" MacResourceTest"在编译时,或   所需的所有卫星组件都是可装载和完全的   签名。

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

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

1)将.resx个文件标记为Build Action

EmbeddedResource

2)如果你要隐藏'例外并提供用户友好的'消息,在Console调试消息,日志记录,某处等等中包含实际的异常消息...

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