ASP.NET 在运行时创建资源

3
我正在开发一个ASP.NET Web应用程序,它具有多语言功能,允许Web管理员在运行时创建新语言。 我考虑的方法如下:
1.用户选择一个可用(未创建)语言。 2.用户确认后,应用程序自动复制一组现有资源,并将文件名替换为新文化的名称。例如:default.aspx.en-us.resx 到 default.aspx.es-ar.resx。 3.用户编辑最近创建的资源。
目前我遇到步骤2的问题。我已经成功复制了资源,但这些新资源被忽略。我认为这是因为新资源未包含在运行程序集中,因此被忽略了。当我在本地项目中测试以下代码时,我需要手动将新资源添加到解决方案中,然后重新编译才能使其正常工作。
有人知道如何使其正常工作吗?
以下是所提及的复制代码。
string _dir = path_ + "App_LocalResources\\\\";
DirectoryInfo _dirInfo = new DirectoryInfo(_dir);

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) {
_file.CopyTo(_dir + _file.Name.Replace("en-us", idioma_.Cultura));

}

string _dir2 = path_ + "App_GlobalResources\\\\";
_dirInfo = new DirectoryInfo(_dir2);

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) {
_file.CopyTo(_dir2 + _file.Name.Replace("en-us", idioma_.Cultura));
}

非常感谢您。

在您的项目中,您的 .ResX 文件的属性 Build ActionCopy To Output DirectoryCustom ToolCustom Tool Namespace 设置为什么? - McGarnagle
默认的 resx 文件具有以下属性:生成操作:“内容”,复制到输出目录:“不复制”,自定义工具:“无”,自定义工具命名空间:“无”。 - Javier
为了补充我的问题,复制过程运行良好。问题在于,在复制后,这些新的资源文件被忽略,并且在我更改语言时不会被读取。 - Javier
你是直接从文件系统复制的还是在解决方案内使用了复制和粘贴?上面的代码生成了文件,但当我进入解决方案资源管理器时,新文件被显示为“已排除”在项目之外。如果我将这些文件包含进来,它就可以工作了。我会继续测试。感谢您的回复。 - Javier
我复制了文件系统 -- 没有触碰解决方案。 - McGarnagle
显示剩余2条评论
1个回答

0
创建或编辑资源文件的方式与读取数据的方式不同。为了创建或编辑资源文件,您应该像创建或编辑XML文件一样进行操作,因为资源文件具有特定结构的XML元素。
也许这篇文章能帮到您...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接