Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ResourceManager未拾取正确的resx文件_C#_.net_Localization_Mef_Resourcemanager - Fatal编程技术网

C# ResourceManager未拾取正确的resx文件

C# ResourceManager未拾取正确的resx文件,c#,.net,localization,mef,resourcemanager,C#,.net,Localization,Mef,Resourcemanager,我在获取正确的资源文件条目时遇到问题,需要一些帮助。。。这是我的设想 我有一系列项目,它们是遵循这种格式的大型报告解决方案的一部分 插件***报告 参考(文件夹) DataAccessLayer(文件夹) 数据集(文件夹) 数据包装器(文件夹) 本地化(文件夹) *.cs 其中*是我要生成的报告的名称 *.cs有一个导出语句,因此我可以使用MEF获取它(不确定这是否相关,但认为值得一提)。*.cs中的命名空间是CompanyName.DataShaper.Plugin.*Report。由于项

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

我有一系列项目,它们是遵循这种格式的大型报告解决方案的一部分

插件***报告

  • 参考(文件夹)
  • DataAccessLayer(文件夹)
  • 数据集(文件夹)
  • 数据包装器(文件夹)
  • 本地化(文件夹)

    *.cs

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

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

现在来看问题。。在*.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)

当我调用资源管理器时,我总是从.resx。。。无论传入调用的CultureInfo对象是什么,都不要使用任何其他语言文件。我搞砸了什么


-->快速更新我的原始问题,但这似乎与MEF有关。我用老式的方式(new*Report())实例化了我的类,并进行了本地化调用,结果很好

好的,我解决了这个问题。。我得到了.resx文件,因为它确实嵌入到了主程序集中。其他文件将被构建到每种语言的单独DLL中,然后我需要将它们复制到构建聚合容器的同一文件夹中,然后我的资源管理器将查看所有语言。

这是怎么回事*?你是否真的构建了附属组件?我有大约20个不同的项目,它们都遵循相同的命名约定。*只表示一个报表名称。例如,其中之一是TransactionReport.cs。。因此有一个TransactionReport.res、TransactionReport.en-gb.resx、Plugin.TransactionReport等。