例如:
/App_GlobalResources/someresources/myfile.resx
/App_GlobalResources/someresources/myfile.fr-fr.resx
/App_GlobalResources/othereresources/otherfile.resx
/App_GlobalResources/othereresources/otherfile.fr-fr.resx
或者,所有.resx文件是否直接放在App_GlobalResources中?
解决方法
/App_GlobalResources /Test TestSubresource.resx TestResource.resx
每个资源文件都有一个名为“TestString”的条目.我使用Visual Studio菜单添加了每个资源文件,因此它为我创建了一个类.默认情况下,添加到App_GlobalResources文件夹的所有类都将具有相同的Resource名称空间.所以,如果我想使用类生成器并且我想在命名空间中使用Test,我需要进入TestSubresource.Designer.cs文件并手动更改命名空间.一旦我这样做,我可以做到以下几点:
var rootResource = Resources.TestResource.TestString; var subResource = Resources.Test.TestSubResource.TestString;
我也可以使用GetGlobalResourceObject引用它们:
var rootResource = GetGlobalResourceObject( "TestResource","TestString" ); var subResource1 = GetGlobalResourceObject( "TestSubresource","TestString" );
请注意,我仍然使用“TestSubresource”作为引用该文件中资源的方法,即使它位于子文件夹中.现在,其中一个问题是,所有文件在App_GlobalResources中的所有文件夹中必须是唯一的,否则您的项目将抛出运行时错误.如果我将名为“TestResource.resx”的资源添加到/ Test,它将抛出以下运行时错误:
The resource file ‘/App_GlobalResources/TestResource.resx’ cannot be
used,as it conflicts with another file with the same name.).
即使我更改了新资源上的命名空间,也是如此.
因此,总而言之,是可能的,但是由于文件系统允许但不是.NET允许的App_GlobalResources文件夹结构的不同部分中的两个具有相同名称的资源文件,因此增加了获取运行时错误的几率.