Visual Studio 2010 资源 (WPF)

发布于 2024-11-02 02:38:59 字数 1092 浏览 0 评论 0原文

我在 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 { ... }

它可以编译,但当我尝试获取资源时运行应用程序时不会崩溃。

  1. 为什么 Visual Studio 创建的内部类与我现有的类发生冲突?很明显,为您的类创建的资源应该具有相同的名称,因为它会为您组织资源。

  2. 为什么当我尝试使用标记为“嵌入式资源”的资源时会出现运行时错误?

    为什么

错误信息:

System.Resources.MissingManifestResourceException: 找不到任何资源 适合特定文化 或中立文化。确保 “MyProj.FooC.resources”正确 嵌入或链接到程序集中 编译时的“MyProj”,或者全部 所需的卫星组件是 可加载且已完全签名。在 System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(字符串 文件名)

I was in visual studio and had a class file: Foo.cs ... I created a a resource (resx) file called Foo.resx because I also plan on having a Foo.es-SP.resx.

Visual studio, very nicely, tucked away the resource file the same way it tucks away code-behind files for xaml pages.

The problem is the application won't compile because the resource generator created a Foo.Designer.cs (designer) class that has an internal Foo class for the resource, which is the same class name as my Foo class:

Foo.cs

public class Foo { ... }

Foo.Designer.cs

internal class Foo { ... }

which is quite annoying because my application will not compile now. So, I figured I'd trick Visual Studio here and rename the file (not the class itself). I now have FooC.cs and FooC.resx and FooC.Designer.cs. This changed the resx class to internal class FooC { ... }

It compiles, but doesn't crashes when I run the application when I try to grab a resource.

  1. Why does Visual Studio create an internal class that collides with my existing class? It's obvious that creating a resource for you class should have the same name because it organizes it for you.

  2. Why is it that I get a runtime error when I try to use the resource that is marked as "Embedded Resource"?

Error Message:

System.Resources.MissingManifestResourceException:
Could not find any resources
appropriate for the specified culture
or the neutral culture. Make sure
"MyProj.FooC.resources" was correctly
embedded or linked into assembly
"MyProj" at compile time, or that all
the satellite assemblies required are
loadable and fully signed. at
System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String
fileName)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

能否归途做我良人 2024-11-09 02:38:59

在解决方案资源管理器中选择 Foo.es-SP.resx,显示其属性 (F4),然后清除自定义工具属性

Select Foo.es-SP.resx in the solution explorer, display its properties (F4), and clear the Custom Tool property

愛上了 2024-11-09 02:38:59

将 Foo.resx 的名称更改为 FooResources.resx。

Change the name of you Foo.resx to, e.g., FooResources.resx.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文