Изменения в разрешении .resx в Visual Studio 2010? - PullRequest
1 голос
/ 04 апреля 2010

Я работаю над довольно простой веб-страницей (MVC2), использующей локализацию на основе файлов ресурсов.

У меня есть проект MVC2 и ресурсы в отдельной сборке.

Ресурсы содержат 3 языка (Resource.resx, Resource.de.resx, Resource.en.resx, Resource.ja.resx), и я запрашиваю их через ResourceManager.

Звоните со страницы .aspx:

<% Resources.Res resman = new Resources.Res(); %>
<%=resman.GetString("String1", new System.Globalization.CultureInfo("en")) %><br />
<%=resman.GetString("String1", new System.Globalization.CultureInfo("ja")) %><br />
<%=resman.GetString("String1", new System.Globalization.CultureInfo("de")) %><br />

ResourceManager:

public class Res
{
  private readonly ResourceManager Manager = Resources.Resource1.ResourceManager;

  public string GetString(string id, CultureInfo info)
  {
    return Manager.GetString(id, info);
  }
}

Gor скомпилированная версия в VS2008 я получаю что-то вроде этого:

String1EN

String1JA

String1DE

Скомпилировано в Visual Studio 2008, все работает нормально, но у меня возникают проблемы, если я компилирую решение в Visual Studio 2010 (также 3.5 как TargetFramework).

Там результат показывает что-то вроде:

String1DEFAULT

String1JA

String1DEFAULT

Я не знаю, что это может быть: это все еще ошибка в VS2010 RC или я что-то здесь не так делаю?

UPDATE: Я обнаружил, что это работает на IIS 7.5, но не на IIS 7.0. К сожалению, это не решение для меня.

Ответы [ 3 ]

1 голос
/ 13 апреля 2010

Это должно просто работать. Поэтому вопрос состоит в том, чтобы выяснить, чего не хватает:

Правильные ли DLL-библиотеки находятся в нужных подпапках каталога bin?

Если вы выгружаете загруженные библиотеки DLL (AppDomain.CurrentDomain.GetAssemblies()) до и после этих вызовов, показывает ли это, что они загрузили библиотеки DLL?

Имеет ли IIS надлежащие разрешения для DLL?

Работает ли это, если вы компилируете в режиме .NET 3.5 в VS2010, если нет, в чем разница в скомпилированных DLL?

1 голос
/ 13 апреля 2010

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

Может быть полезно посмотреть на код .net и посмотреть, что происходит. Если вы хотите попробовать это, сделайте следующее:

  • В Visual Studio перейдите в Инструменты -> Параметры -> Отладка -> Символы
  • Где указано расположение файла символов (.pdb), введите

    http://msdl.microsoft.com/download/symbols

  • Укажите путь, в котором написано "Кэшировать символы из хранилища символов в этот каталог:"

  • Хит в порядке
  • Появится диалоговое окно, примите условия

Теперь, когда вы отлаживаете, вы можете войти в код менеджера ресурсов.

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

Считыватель пользовательских ресурсов

0 голосов
/ 13 апреля 2010

Я не понял, что пошло не так. Но так как VS2010 и .NET 4.0 были выпущены вчера, я получил возможность опробовать их с выпущенной версией, и она отлично работала.

Так что, я думаю, это была просто ошибка в RC, которая была исправлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...