2012-06-13 55 views
2

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

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

现在,和stackoverflowed,这是不常见的,但提供的解决方案不适用于我的情况,不适用于C++ CLI,或不清楚我的新手。我试过在窗体类代码中改变行gcnew System::ComponentModel::ComponentResourceManager(...),我搜索了默认命名空间的项目设置,我试图查看资源文件的代码,搜索周围的一些属性来定义命名空间...可以解决不了。我希望能够在设计器中看到背景图像 我很感激任何帮助

+0

这是一个难以解决的问题。在生成的程序集上运行ildasm.exe。双击清单并查看.mresource指令的名称。 –

+0

此刻也在与这个问题搏斗,以及。在运行时,它会查找“WrongWord.Form.Resources”,即使在中间目录中我有“RightWord.Form.Resources”。试图改变资源的逻辑名称,没有帮助。 ildasm也将.mresource显示为“RightWord.Form.Resources”。什么使它寻找“WrongWord.Form.Resources”?我们在同一个命名空间内有其他形式,唯一不同的是(如OP所发现的)这个形式具有定义的资源。 –

回答

3

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

我试图通过更改项目中每个构建配置的EmbeddedResource元素下的LogicalName元素来解决此问题。 (卸载项目并在.vcxproj文件中进行查找/替换)。我们把它改成

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

那些LogicalName线是罪犯,但 - 他们不匹配是如何产生的实际.resource文件的名称。

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

我想知道VS从2008年到2010年的升级有过错?我们的问题始于这一点。

+0

谢谢,+1。不幸的是,当你的答案到来时,我已经放弃了这个特定的问题,暂时加载了我所需要的外部文件,而没有资源管理器 – Rojo