Я пытаюсь заставить локализацию для моего проекта MVC работать с нашей существующей инфраструктурой для редактирования строковых ресурсов.Мы храним все наши строки ресурсов в таблицах базы данных и имеем интерфейс веб-интерфейса для их редактирования, а также приложение для экспорта, которое сгенерировало файлы .resx.Все это прекрасно работает, но у меня возникли небольшие трудности с новым проектом, использующим MVC2 и VS2010.
Я задал еще один вопрос по этому вопросу, ответ на который почти привел меня туда,но не совсем.
Теперь я изменил ресурсы, чтобы они находились в папке «Ресурсы» (вместо App_GlobalResources), как рекомендовано многими людьми.И установите следующие параметры для моих файлов .resx ...
Build Action = Embedded Resource
Copy to Output Directory = Do not copy
Custom Tool = PublicResXFileCodeGenerator
Custom Tool Namespace = Resources
File Name = MyApp.resx
Я изменил свое приложение экспорта для запуска инструмента resgen.exe со следующими параметрами ...
string args = string.Format("/publicClass \"{0}\" /str:cs,Resources,{1},\"{2}\"", resourceFile, Path.GetFileNameWithoutExtension(resourceFile), csFilename);
... который генерирует почти идентичный файл .designer.cs, который я получаю, когда первоначально добавляю файл .resx в свой проект.Единственное отличие состоит в том, что
Сгенерированный файл .designer.cs несколько отличается от файла, который я получаю при запуске инструмента resgen.exe из моего приложения экспорта.
Это сгенерированный кодVS2010, когда я впервые добавляю файл .resx в мою папку «Ресурсы» ...
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.MyApp", typeof(MyApp).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
... разница при запуске инструмента resgen.exe заключается в том, что это префиксы MyCompany.MyApp в пространство имен в конструкторе ResourceManager
new global::System.Resources.ResourceManager("MyCompany.MyApp.Resources.MyApp", typeof(MyApp).Assembly);
Теперь, мне кажется, это ошибка в инструменте resgen.exe, потому что я сказал, что Пространство имен для моих ресурсов Ресурсы , а не MyCompany.MyApp.Resources .
Итак, есть ли решение / обходной путь для этой проблемы?
Единственное, что яМожно подумать, что в данный момент нужно пост-обработать сгенерированный файл .designer.cs с powershell и исправить его!