gpt4 book ai didi

c# - ResourceManager 没有选择正确的 resx 文件

转载 作者:行者123 更新时间:2023-11-30 15:47:48 25 4
gpt4 key购买 nike

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

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

插件。****报告

  • 引用资料(文件夹)
  • DataAccessLayer(文件夹)
  • 数据集(文件夹)
  • DataWrappers(文件夹)
  • 本地化(文件夹)

    *.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 对象。

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

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

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

最佳答案

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

关于c# - ResourceManager 没有选择正确的 resx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com