ResourceManager没有获取正确的resx文件

时间:2010-07-05 20:54:25

标签: c# .net localization mef resourcemanager

我在获取正确的资源文件条目时遇到问题,需要一些帮助...这是我的方案

我有一系列项目是遵循此格式的大型报告解决方案的一部分

插件。****报告

  • 参考(文件夹)
  • DataAccessLayer(文件夹)
  • DataSets(文件夹)
  • DataWrappers(文件夹)
  • 本地化(文件夹)

    * CS

其中*是我要生成的报告的名称

* .cs有一个导出语句,以便我可以使用MEF来获取它(不确定这是否相关,但认为值得一提)。 * .cs中的命名空间是CompanyName.DataShaper.Plugin。* Report。由于项目名称和文件的位置,我将每个项目的默认名称空间更改为CompanyName.DataShaper.Plugin。*报告(它只是插件。*我的更改前的报告)。

现在问题.. * .cs内部我实例化一个ResourceManager。看起来像这样......

_resourceManager =
                new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
                    Assembly.GetExecutingAssembly());

在我的resx设计器文件中,我有以下内容......

internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }

我对资源管理器的调用看起来像这样......

string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);

其中_currentCultureInfo是一个正确的CultureInfo对象。

我在每个项目的Localization文件夹中有4个不同的resx文件,(**** Report.resx,**** Report.fr-ca.resx,**** Report.en-gb.resx, **** Report.de-de.resx)。

当我调用资源管理器时,我总是从.resx获取条目...从来没有任何其他语言文件,无论我传入调用的CultureInfo对象。我搞砸了什么?

- >快速更新我的原始问题,但这似乎与MEF相关。我以老式的方式(new * Report())实例化了我的课程并进行了本地化调用并且工作正常

1 个答案:

答案 0 :(得分:3)

好的,我想出来了..我得到了.resx文件,因为它真正嵌入到主程序集中。其他文件被构建到每种语言的单独dll中,然后我需要将它们复制到我构建聚合容器的同一文件夹中,然后我的资源管理器会查看所有语言。