0

在我将其本地化之前,表单运行良好 - 然后它生成运行时异常并且找不到资源。

命名空间从根目录额外嵌套一层。

namespace MyApp
{
  namespace NextLevel
  {

    <MyForm class>

  }
}

而MyApp 也对应Assembly 名称。

删除 NextLevel 所以只有 MyApp::MyForm 并且它像以前一样工作。

删除本地化,无论是否嵌套,它都可以正常工作。

如果有任何重要性,这是 C++/CLI 和 dll 程序集。

我尝试了 resx 文件 - 在资源名称模板之间添加 .NextLevel,但结果是相同的。

我的核心资源是中性的(嵌入的),然后是英文的(变成卫星的)。

有任何想法吗?

资源如何在内部命名以供资源管理器找到它们?

非常感谢。

谢谢。

4

1 回答 1

0

解决了 - 这就是我所做的。

在一个sideproject中,我遇到了完全相同的问题/结果,添加了一个嵌套的命名空间级别。我在 resx 文件中添加了像“.NesxtLevel”这样的额外级别以正确命名资源。

我在链接器输入中添加了重命名的资源文件作为嵌入式托管资源。

这很有效——但我觉得——为什么我必须在此处手动输入每个资源文件。

我查看了构建日志,发现 /out 仍然引用为 /ASSEMBLYRESOURCE:资源文件与 resx 文件的 basename 和 rootnamespace 相同,而不是其中包含额外命名空间的逻辑名称。

我手动删除了与 resx 文件具有相同基本名称的旧资源文件。

这解决了它。我也可以删除我在链接器选项中添加的嵌入式资源。

一直认为项目的重建也会删除旧的资源文件,但显然不是。因此,似乎当 VS 创建命令行时,如果存在以 roonamespace+resx-filename 作为逻辑名称的资源文件 - 它会选择那个 - 而不是由资源编译器设置创建的那个。

这是VS 2005,因此与MS谈论它是没有用的。很高兴它解决了。

于 2012-06-08T03:50:17.797 回答