【发布时间】:2011-08-06 08:33:06
【问题描述】:
我在 Visual Studio 中有一个类文件:Foo.cs ...我创建了一个名为 Foo.resx 的资源 (resx) 文件,因为我还计划关于拥有 Foo.es-SP.resx.
Visual Studio 很好地隐藏了资源文件,就像隐藏 xaml 页面的代码隐藏文件一样。
问题是应用程序无法编译,因为资源生成器创建了一个 Foo.Designer.cs(设计器)类,该类具有资源的内部 Foo 类,该类与我的 Foo 类的类名相同:
Foo.cs
public class Foo { ... }
Foo.Designer.cs
internal class Foo { ... }
这很烦人,因为我的应用程序现在无法编译。所以,我想我会在这里欺骗 Visual Studio 并重命名文件(而不是类本身)。我现在有 FooC.cs 和 FooC.resx 和 FooC.Designer.cs。这将 resx 类更改为 internal class FooC { ... }
它可以编译,但在我尝试获取资源时运行应用程序时不会崩溃。
为什么 Visual Studio 会创建一个与我现有的类发生冲突的内部类?很明显,为您创建的资源类应该具有相同的名称,因为它会为您组织它。
为什么我尝试使用标记为“嵌入式资源”的资源时出现运行时错误?
错误信息:
System.Resources.MissingManifestResourceException: 找不到任何资源 适用于指定的文化 或中立文化。确保 “MyProj.FooC.resources”是正确的 嵌入或链接到程序集中 “MyProj”在编译时,或者全部 所需的卫星组件是 可加载并完全签名。在 System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(字符串 文件名)
【问题讨论】:
标签: wpf visual-studio-2010 resources manifest embedded-resource