65.9K
CodeProject 正在变化。 阅读更多。
Home

问题已解决:IOException - 无法找到资源

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2013年9月4日

CPOL

1分钟阅读

viewsIcon

18685

WPF 应用在执行本地化时遇到的问题

介绍 

最近我正在开发一个使用 LocBAML 工具支持本地化的 WPF 应用程序。我创建了一个示例应用程序,拥有一个非常简单的 UI,包含一个窗口内的按钮。在这里,我假设大家对如何生成卫星程序集已经有所了解。所以,快速进入主题,当我构建我的应用程序时,构建成功了。但是当我启动它时,应用程序崩溃了,原因是 IOException。唉!!! 

 

 

经过大约一个小时的排查,我发现这是由于文化设置引起的。让我们先看看我的代码

使用代码 

我的 App.xaml.cs 看起来像这样:  

public partial class App : Application
    {
        public App()
        {
            CultureInfo fr = new CultureInfo("fr-FR");
            Thread.CurrentThread.CurrentCulture = fr;
            Thread.CurrentThread.CurrentUICulture = fr;           
        }
    }  

除了上面的代码,我还更新了我的项目文件 (.csproj) 中的开发语言,以便我的卫星程序集包含中性语言资源。在项目文件中添加了以下行:  

<UICulture>en-US</UICulture> 

除此之外,我的应用程序中没有做任何特殊的操作。在 MSDN 上查阅资料后,我找到了导致文化更改引发异常的原因。

好了,不必惊慌。解决方案非常简单。让我们继续打开你的 assembly.info.cs 文件并取消注释以下行: 

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 

经过这个小小的修改,一切就绪了。
通过取消注释这一行,我们告诉运行时需要从卫星程序集中读取文化信息。

希望这个技巧能节省你的时间 :) 

© . All rights reserved.