如何在VS2017中的不同语言环境中进行调试

时间:2017-11-22 11:11:57

标签: c# debugging visual-studio-2017 locale

我有一个令人讨厌的错误,只有当我在非英语Windows上运行我的C#程序时才能表现出来。它是从double到string的转换(我在某些值上得到逗号而不是点,我们不应该本地化)。为了测试修复(即在任何地方应用InvariantLocale),我需要构建可执行文件并在非英语VM上运行它,这非常耗时。

我的问题是:是否有可能在VS2017内调试假装在非英语Windows环境中? (让我们说例如荷兰语Windows)

1 个答案:

答案 0 :(得分:2)

我使用实用程序类来设置语言:

public static class LanguageSetter
{
    [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
    private static extern ushort SetThreadUILanguage(ushort _languageId);

    public static void SetLanguage(string uiLanguage)
    {
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(uiLanguage);
        SetThreadUILanguage((ushort) Thread.CurrentThread.CurrentUICulture.LCID);
        CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo(uiLanguage);
    }
}

只需使用LanguageSetter.SetLanguage("nl-NL");

进行调用即可

如果您使用WPF,请在该函数的末尾添加另一行: FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)));