Принуждение исключения на английском языке в .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.
Ответ 5
На самом деле не существует хорошего решения для этого, проголосуйте за Connect для этого подхода
https://connect.microsoft.com/VisualStudio/feedback/details/591839/exception-localization-in-app-config-and-web-config
Ответ 6
Я пробовал следующие изменения в web.config, и это помогло:
<system.web>
<globalization uiCulture="en-US" culture="en-US" />
...
Ответ 7
Вы пытались переключить культуру непосредственно перед чтением текста исключения? Возможно, что локализация возникает при доступе к сообщению - в отличие от того, когда создается объект исключения.