C ++ / CLI无法找到资源

时间:2012-06-13 16:14:31

标签: .net winforms

我的问题类似于我在谷歌搜索过去几个小时后发现的一些问题。但是,我无法让它与我读过的内容一起工作,而且我很感激帮助。 我有一个C ++ / CLI项目,称为(例如)some.thing,在名为some.thing的文件夹中,其中包含一个Windows窗体。我把所有类都放在命名空间中的一些东西。为什么?可能我误解了但是我曾在某处读到它是标准的。无论如何,这不是问题。 一切正常,直到我从设计师,资源(背景图像)添加到表单。它会生成一个运行时异常:System.Resources.MissingManifestResourceException。

消息无法找到适合指定文化或中性文化的任何资源。确保" some.thing.myForm.resources"是正确嵌入或链接到汇编" some.thing"在编译时,或者所有所需的附属程序集都是可加载和完全签名的

现在,对于我googled和stackoverflowed,这并不是那么罕见,但提供的解决方案不适用于我的案例,不适用于C ++ CLI,或者不是对我的新手来说足够清楚。

我尝试更改表单类代码中的行gcnew System::ComponentModel::ComponentResourceManager(...),我搜索了默认命名空间的项目设置,我试图查看资源文件的代码,搜索一些属性来定义命名空间。 ..无法解决它。我希望能够在设计师中看到背景图像 我很感激任何帮助

1 个答案:

答案 0 :(得分:3)

在我们的C ++ / CLI项目中遇到了这个问题 - 请参阅原始问题下的评论。在运行时,在加载表单时,它正在查找例如“Namespace1.Form1.Resources”。但是资源文件是Namespace2.Form1.resources,例如。

我设法通过更改项目中每个构建配置的EmbeddedResource元素下的LogicalName元素来解决此问题。 (卸载项目并在.vcxproj文件中执行查找/替换)。我们将其改为

<LogicalName>$(IntDir)$(RootNamespace).%(Filename).resources</LogicalName>

但那些LogicalName行是罪魁祸首 - 它们与生成的实际.resource文件的名称不匹配。

所以,你的情况可能不完全一样,但我敢打赌它与项目文件中的那些LogicalName值有关。 (对于每个表单也有LogicalNamee覆盖,如果上面的代码也不起作用,请检查它们 - 我们的是空的,因此它可以使用所有表单的项目默认LogicalName。)

我想知道从2008年到2010年的VS升级是否有问题?我们的问题始于那时。