我有一个使用Visual Studio 2008构建的简单Windows窗体(C#、. NET 2.0)应用程序。
我想支持多种UI语言,并使用表单的“ Localizable”属性以及特定于文化的.resx文件,本地化方面可以无缝且轻松地工作。Visual Studio会自动将区域性特定的resx文件编译为附属程序集,因此在我的已编译应用程序文件夹中,包含这些区域性程序集的特定于区域性的子文件夹。
我希望将应用程序作为单个程序集部署(复制到位),但仍保留包含多组特定于文化的资源的能力。
使用ILMerge(或ILRepack),我可以将附属程序集合并到主要的可执行程序集中,但是标准的.NET ResourceManager后备机制找不到编译到主要程序集中的特定于区域性的资源。
有趣的是,如果将合并的(可执行)程序集放入其特定于区域性的子文件夹中,则一切正常!同样,当我使用Reflector(或ILSpy)时,可以在合并的assemby中看到主要资源和特定于文化的资源。但是将主程序集复制到特定于文化的子文件夹中仍然无法实现合并的目的-我真的需要只有单个程序集的一个副本...
我想知道是否有任何方法可以劫持或影响ResourceManager后备机制,以在同一程序集中而不是在GAC和以文化命名的子文件夹中查找特定于文化的资源。我看到了以下文章中描述的回退机制,但是没有关于如何修改的线索:Resource Manager上的BCL团队博客文章。
有谁有想法吗?这似乎是一个在线上相对频繁的问题(例如,Stack Overflow上的另一个问题:“ ILMerge和本地化资源程序集 ”),但是我在任何地方都没有找到任何权威性的答案。
交互式爱情
米脂
相关分类