我正在开发一个用SharpDevelop开发的本地化应用程序。基于教程,我遇到了一个错误:
无法在磁盘上找到适合指定区域性(或中性区域性)的任何资源。baseName:
我创建了重新源文件,使用的是Project、Add、各自的“空重新源文件”(找不到“程序集资源文件”)。此外,我已经将“构建操作”设置为"EmbeddedResource“。
在程序中,我有一个类,它执行以下操作
// load the resource file once
resourceManager = ResourceManager.CreateFileBasedResourceManager(file, filePath, null);
// depending on user selection, I set the CultureInfo in the code behind the form, i.e.
Thread.CurrentThread.CurrentUICulture = locales[0]; // which contains "en"
// and that's the method of the same class used to lookup the values
public string getValue ( string key )
{
return resourceManager.GetString(key);
}SharpDevelop 3.0.0.3437 .NET版本2.0.50727.3053
即使在仔细浏览评论和搜索了很长一段时间之后,我仍然找不到一个例子或解决方案。因此,问题是:
非常感谢!
发布于 2008-11-20 17:39:09
CreateFileBasedResourceManager只处理二进制.resources文件(而不是.resx文件)。
如果坚持从外部文件加载资源,而不是将资源嵌入程序集中,则需要运行resgen命令行实用程序来生成.resources文件。因此,如果您还没有这样做,那么为每个受支持的区域性生成一个。
否则看上去没问题。
但是,如果您希望将资源嵌入到程序集中,请在“属性”窗口中将“生成操作”设置为“嵌入资源”。
如果还希望生成一个强类型类来处理所有脏工作,请将基文件上的自定义工具(不变文件)设置为ResXFileCodeGenerator,如果需要,则设置为PublicResXFileCodeGenerator (在创建附属程序集时很好)。
然后您就不需要自己来加载本地化资源了。生成的类为您完成了所有这些工作。
对于资源中的每个键,在生成的类中生成一个静态属性,您只需调用该属性,它非常干净,而且是迄今为止最简单的方法。
除非有特殊的理由从.resources文件中加载资源,否则我总是建议将它们嵌入到(an)程序集中。
发布于 2008-11-20 16:46:17
我不确定您正在使用的是哪个版本的.NET,但是这篇关于运行库如何定位程序集的MSDN文章可能对您有帮助。
https://stackoverflow.com/questions/305946
复制相似问题