阻止WPFLocalizeExtension尝试加载所有可能语言的资源

时间:2018-03-13 15:47:51

标签: wpf localization

我刚开始在项目中使用WPFLocalizeExtension。它有效,但它对应用程序的启动性能有严重影响。它试图为所有可能的语言加载资源,包括许多我们无法为其提供资源的语言。通常情况下可能会发生,恕不另行通知,但在这种情况下,我们为某些已加载的程序集设置了特殊的文件夹结构虽然资源DLL仍位于可执行文件夹正下方的语言文件夹中,但应用程序会为每种语言获取AssemblyResolve事件。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题,并通过修改WPFLocalizeExtension源代码来接近它。

当您查看代码时,您会找到一个名为 ResxLocalizationProviderBase 的类。此类包含 GetResourcemanager 方法,该方法会导致大量 AssemblyResolve 事件,因为它会尝试获取随.NET Framework一起提供的所有文化的资源集(第498行):

var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

foreach (var c in cultures)
{
   ...
}

我们通过创建CultureInfo对象列表来修改代码,这些对象仅包含语言,我们希望为其提供资源。