Принуждение исключения на английском языке в .NET framework

Во время работы с ASP.NET MVC я заметил, что сообщения об исключениях, выпущенные платформой .NET, установленные в моей системе, находятся на немецком языке. Я бы предпочел английские сообщения, поэтому я могу опубликовать их на SO.

Я знаю, что это было задано ранее на SO, но, как ни странно, ни один из предлагаемых обходных решений, похоже, не работает в моем случае. Я уже пробовал следующее:

  • переключение моей системы Windows на английский язык и перезапуск Visual Studio
  • Инструменты настройки → Параметры → Среда → Международные настройки → Язык на "Английский"
  • установка языкового стандарта потока на английском языке перед тем, как исключение будет выбрано следующим образом:

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture( "en-US" ); Thread.CurrentThread.CurrentUICulture = new CultureInfo ( "en-US" );

    //вызывать мой ошибочный метод...

Итак, как я могу заставить .NET framework вызывать сообщения об исключениях на английском языке? И есть ли какой-либо подход, который делает это для решения или даже для всей системы?

Изменить: Исключение выбрасывается при выполнении моих модульных тестов. Я не уверен, что это причина, по которой культура потоков не влияла.

Ответ 1

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

Настройка языка пользовательского интерфейса в методе тестирования прямо перед тем, как выбрано исключение, сделало трюк для меня.

Ответ 2

Удалите пакет немецкого языка:

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

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

Ответ 3

Вы пытались настроить культуру пользовательского интерфейса на "en" в web.config? Подробнее здесь.

Ответ 4

По всей видимости, все сообщения об исключительной структуре привязаны к установленному языку ОС. Поэтому, если вы не установите английскую версию Windows. Исключения структуры .Net не будут отображаться на английском языке. Хотя кажется странным, что установка CurrentUICulture на "en-US" не помогает, я использовал этот способ обхода, чтобы иметь английские сообщения на моей голландской ОС Windows.

Ответ 6

Я пробовал следующие изменения в web.config, и это помогло:

<system.web>
    <globalization uiCulture="en-US" culture="en-US" />
...

Ответ 7

Вы пытались переключить культуру непосредственно перед чтением текста исключения? Возможно, что локализация возникает при доступе к сообщению - в отличие от того, когда создается объект исключения.