winforms C++/CLI找不到资源

bxgwgixi  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(158)

我的问题和我在谷歌上搜索了几个小时后发现的一些问题类似。但是,我无法让它与我所读到的内容一起工作,我希望得到帮助。我有一个C++/CLI项目,名为(例如)some.thing,在一个名为some.thing的文件夹中,其中有一个windows窗体。我将所有的类放在命名空间some::thing中。为什么?可能我误解了,但我在某个地方读到过,这是标准。无论如何,这不是这里的问题。一切都很好,直到我从设计器中添加了一个资源(背景图像)到窗体中。它生成了一个运行时异常:系统.资源.缺少清单资源异常。
消息为 * 找不到任何适合指定的区域性或非特定区域性的资源。请确保“some.thing.myForm.resources”在编译时已正确嵌入或链接到程序集“some.thing”中,或者确保所需的所有附属程序集都是可加载的并且经过完全签名 *
现在,对于我在谷歌上搜索和堆栈溢出的内容,这并不罕见,但提供的解决方案不适用于我的情况,不适用于C++CLI,或者对我的新手来说不够清晰。
我试着在窗体中更改行类的代码是gcnew System::ComponentModel::ComponentResourceManager(...),我搜索了默认命名空间的项目设置,我试着查看资源文件的代码,搜索了一些属性来定义命名空间......无法解决。我希望能够在设计器中看到背景图像,我将非常感谢任何帮助

qncylg1j

qncylg1j1#

在我们的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升级是不是出了问题?我们的问题就开始于那一点。

zbwhf8kr

zbwhf8kr2#

我也遇到了这个非常烦人的问题,最终我的答案是将托管资源名称属性(项目文件中的LogicalName)设置为空(空字符串),之后一切都很好。我想编译器会尝试找出在我的情况下有效的方法。祝你好运!

相关问题