【发布时间】:2010-07-12 17:14:59
【问题描述】:
我正在尝试使用我们现有的基础架构来为我的 MVC 项目进行本地化,以编辑字符串资源。我们将所有资源字符串存储在数据库表中,并有一个用于编辑它们的前端 Web UI,以及一个生成 .resx 文件的导出应用程序。这一切都很好,但我在使用 MVC2 和 VS2010 的新项目时遇到了一点困难。
我已经问过another question 这个问题,答案几乎让我明白了,但并不完全。
我现在已按照许多人的建议将资源更改为位于 Resources 文件夹(而不是 App_GlobalResources)中。并对我的 .resx 文件进行以下设置...
构建操作 = 嵌入式资源 复制到输出目录 = 不复制 自定义工具 = PublicResXFileCodeGenerator 自定义工具命名空间 = 资源 文件名 = MyApp.resx我已更改我的导出应用程序以使用以下参数运行resgen.exe 工具...
string args = string.Format("/publicClass \"{0}\" /str:cs,Resources,{1},\"{2}\"", resourceFile, Path.GetFileNameWithoutExtension(resourceFile), csFilename);
...它会生成一个几乎与我最初将 .resx 文件添加到我的项目中时得到的相同的 .designer.cs 文件。唯一的区别是
生成的 .designer.cs 文件与我在导出应用程序中运行 resgen.exe 工具时得到的文件略有不同。
这是我第一次将 .resx 文件添加到我的 Resources 文件夹时 VS2010 生成的代码...
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 工具中的一个错误,因为我告诉它我的资源的命名空间是 Resources,而不是 MyCompany.MyApp。资源。
那么,是否有解决此问题的方法/解决方法?
目前我唯一能想到的就是用powershell对生成的.designer.cs文件进行后期处理并修复!
【问题讨论】:
标签: visual-studio-2010 asp.net-mvc-2 resx