我刚开始在项目中使用WPFLocalizeExtension。它有效,但它对应用程序的启动性能有严重影响。它试图为所有可能的语言加载资源,包括许多我们无法为其提供资源的语言。通常情况下可能会发生,恕不另行通知,但在这种情况下,我们为某些已加载的程序集设置了特殊的文件夹结构虽然资源DLL仍位于可执行文件夹正下方的语言文件夹中,但应用程序会为每种语言获取AssemblyResolve事件。
提前感谢您的帮助。
答案 0 :(得分:0)
我们遇到了同样的问题,并通过修改WPFLocalizeExtension源代码来接近它。
当您查看代码时,您会找到一个名为 ResxLocalizationProviderBase 的类。此类包含 GetResourcemanager 方法,该方法会导致大量 AssemblyResolve 事件,因为它会尝试获取随.NET Framework一起提供的所有文化的资源集(第498行):
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (var c in cultures)
{
...
}
我们通过创建CultureInfo对象列表来修改代码,这些对象仅包含语言,我们希望为其提供资源。