3

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

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

现在,对于我用谷歌搜索和 stackoverflow 搜索的内容,这并不少见,但提供的解决方案不适用于我的情况,不适用于 C++CLI,或者对于我的新手来说不够清楚。

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

4

1 回答 1

4

在我们的 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升级是不是有问题?我们的问题从那时开始。

于 2012-08-07T20:11:31.557 回答