.NET 资源与动态 NAV

.NET Resources & Dynamics NAV

我有一个项目旨在用作 Dynamics NAV 的加载项。 它应该以当前使用的语言显示,以英语为标准。 为了确保这一点,我有一个设置 CurrentCulture 和 CurrentUICulture.

的方法

在 Dynamics NAV 之外运行的测试项目中,表格显示有适当的翻译。

尽管在 Dynamics NAV 中使用加载项时,表单始终为英文,尽管当前文化和当前 UI 文化被设置为正确的语言(我通过调试在多种情况下检查了这一点).

我尝试了两种设置:

两种情况的结果是一样的:
在 NAV 外启动程序:翻译成功
从 NAV 内部启动程序:始终使用标准资源

有人知道我是否遗漏了什么细节吗?

这个问题很常见:​​去资源被编译到一个 "de" 文件夹中,结果 NAV - 像往常一样 - 无法找到文件。

AssemblyResolve 修复了这个问题:

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    var location = Path.Combine(
        Path.GetDirectoryName(typeof(MyForm).Assembly.Location),
        CultureInfo.CurrentCulture.Parent.Name,
        args.Name.Substring(0, args.Name.IndexOf(",", StringComparison.OrdinalIgnoreCase)) + ".dll");

    if (File.Exists(location))
    {
        return Assembly.LoadFrom(location);
    }

    return null;
    }
}

唯一要记住的细节是在执行 InitializeComponent 函数之前订阅 AssemblyResolve。