【发布时间】:2018-06-22 20:25:33
【问题描述】:
我正在查看此页面上的建议 Programmatic way to get all the available languages (in satellite assemblies),并决定这个可能最适合:
public IEnumerable<CultureInfo> GetSupportedCulture()
{
//Get all culture
CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
//Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
//Return all culture for which satellite folder found with culture code.
return culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)));
}
所以,我创建了一个小测试方法,但我注意到我们的一个资源文件没有生成。
例如,以下是 .resx 文件(位于单独的库项目中):
- (英语)LanguageResources.resx
- (法语)LanguageResource.fr-FR.resx
- (西班牙语)LanguageResource.es-ES.resx
- (越南语)LanguageResource.vn-VN.resx
所以当我转到正在执行的程序集 bin 目录时,我只看到以下文件夹:es-ES 和 fr-FR
文件夹里面当然是resources.dll文件。
有人知道为什么在构建过程中没有创建 vn-VN 文件夹/resources.dll 文件吗?英语也不存在,但我有一半的期望,因为它是我们的默认设置,并且 LanguageResources.resx 文件名中不包含“en-US”。
我检查了包含资源文件的库的 .csproj 文件 - 并没有看到任何明显的东西。
但是,我确实在构建日志中找到了这个:
- 1> 将“”的文化分配给文件“LanguageResources\LanguageResource.resx”。 (任务 ID:22)
- 1> 将“”的文化分配给文件“LanguageResources\LanguageResource.vn-VN.resx”。 (任务 ID:22)
而且由于没有生成英语或越南语的 resources.dll 文件,我认为这可能与它有关。
任何人都可以对此有所了解吗?并告诉我如何解决这个问题?
【问题讨论】:
标签: .net resources globalization