Исключить язык исключений на английском языке

Моя Visual Studio 2005 является французской, установленной на французской ОС. Все исключения, которые я получаю во время отладки или времени выполнения, я получаю также на французском языке.

Могу ли я, однако, сделать что-то, что сообщения с исключениями находятся в английском? Для просмотра, обсуждения и т.д.

Я попробовал следующее:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
throw new NullReferenceException();

получен

Ссылка на объект не установлена ​​в экземпляр объекта.

Это, конечно, круто... но, работая над французским проектом, я не буду жестко привязывать Thread.CurrentUICulture к английскому. Я хочу, чтобы изменения на английском были только на моей локальной машине и не изменяли свойства проекта.

Можно ли установить язык исключений без изменения кода приложения?


В VS 2008, установите Инструменты → Параметры → Окружающая среда → Международные настройки → Язык на "Английский", которые бросают одно и то же исключение, получают сообщение ex en en French: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/s800/exception.png

Ответ 1

Наконец, "резкое" решение может быть следующим:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

#if DEBUG
    // Add this; Change the Locales(En-US): Done.
    Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
#endif

    Application.Run(new Form1());
}

Однако я хотел бы получить решение без изменений в коде проекта.

От MSDN:

Свойство CurrentUICulture будет установить неявно, если приложение укажите CurrentUICulture. Если CurrentUICulture не установлен явно в коде приложения он устанавливается функция GetUserDefaultUilanguageв Windows 2000 и Windows XP Многоязычный пользовательский интерфейс (MUI) продуктов, которые конечный пользователь может установить язык по умолчанию. Если пользовательский интерфейс язык не задан, он будет установлен системный язык, который является языком действующего системных ресурсов.

Если приложение основано на Web, CurrentUICulture может быть установлен явно в коде приложения к пользовательскому браузер принимает язык.

Ответ 2

Вы можете установить текущую культуру на английский язык только в сборках отладки:

#if DEBUG
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
#endif

Ответ 4

Удалите французский языковой пакет:

Пуск - Панель управления - Программы и функции - Языковой пакет Microsoft.NET Framework (4 клиента) FRU - Удаление

Вам может потребоваться повторить удаление для каждой версии .NET Framework, которую вы найдете там.

Ответ 5

Я не пытался, но в соответствии с документацией это свойство должно быть установлено по умолчанию текущему языку пользовательского интерфейса, который установлен в панели управления. Поэтому он должен работать правильно автоматически в соответствии с вашими международными настройками.

Ответ 6

Для всех пользователей Win8/8.1, сталкивающихся с этой проблемой, установка пакета Language Language и создание его языка отображения Windows представляется простым способом его решения, поскольку Win8 имеет встроенную инфраструктуру .net. ядро.

Вероятно, то же самое для Win10.

Ответ 7

В интересах всех будущих пользователей вашего приложения поместите это в метод Main:

CultureInfo.DefaultThreadCurrentUICulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

Это избавит их от многих проблем с поиском английского эквивалента плохо переведенного сообщения об ошибке.