2010-07-05 31 views
2

我有一个问题,得到正确的资源文件条目,需要一些帮助......这是我的情景的ResourceManager不拿起正确的RESX文件

我有一系列的项目是一个大报告的一部分解决方案是按照这个格式

插件。****报告

  • 参考(文件夹)
  • DataAccessLayer(文件夹)
  • 数据集(文件夹)
  • DataWrappers(文件夹)
  • 本地化(文件夹)

    *的.cs

其中*是报告的名字,我要产生

* .cs有一个导出语句,以便我可以使用MEF进行拾取(不确定这是否相关,但认为值得一提)。 * .cs中的名称空间是CompanyName.DataShaper.Plugin。*报告。由于项目名称和文件的位置,我将每个项目的默认命名空间更改为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对象。

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

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

- >快速更新到我原来的问题,但这确实看起来与MEF相关。我实例化我的班老式的方式(新*报告()),并作出本地化电话,它工作正常

+0

什么是*?你真的得到了卫星组件? – 2010-07-05 22:05:30

+0

我有大约20个不同的项目,都遵循相同的命名约定。 *只是代表一个报告名称。例如,其中一个是TransactionReport.cs ..所以有一个TransactionReport.res,TransactionReport.en-gb.resx,Plugin。交易报告等 – Chris 2010-07-06 10:20:49

回答

3

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