2011-04-15 108 views
1

我在Visual Studio中,有一个类文件:Foo.cs ...我创建了一个名为Foo.resx AA资源(RESX)文件,因为我也是在具有计划Foo.es-SP.resxVisual Studio 2010的资源(WPF)

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. 为什么当我尝试使用标记为“Embedded Resource”的资源时出现运行时错误?

错误消息:

System.Resources.MissingManifestResourceException: 找不到适合指定区域性 或区域性的资源 。确保 “MyProj.FooC.resources”是正确 嵌入或链接到装配 “的Myproj”在编译时,或所有 所需的附属程序集 加载并已进行了完全签名。在 System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(字符串 文件名)

回答

0

选择Foo.es-SP.resx在解决方案浏览器,显示其属性(F4),并清除自定义工具属性

+0

我还没有得到Foo.es-SP.resx呢。我仍然试图让Foo.resx正常工作... – michael 2011-04-15 13:53:17

+0

你想要什么?你打算使用生成的类吗?如果没有,请清除Foo.resx的自定义工具,并且它不会生成类 – 2011-04-15 13:57:22

+0

我希望能够使用我输入到资源文件中的字符串资源。我有一个“标题”作为我的资源字符串之一,但是如果我继续收到这些错误,我该如何在课程中真正使用它。理想情况下,我希望我的资源只能在我的程序集内部使用,但也不会给我这些与命名冲突,如果我没有将类资源文件命名为类文件,VS不会很好地组织它。我可以添加一个FooResources.resx并引用它,但Foo.resx更好。 – michael 2011-04-15 14:03:49

0

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

+0

是的,这解决了有两个Foo类的问题,但是我仍然有另一个问题。此外,这使资源只是坐在那里,而不是由Visual Studio组织。 – michael 2011-04-15 18:27:57

+0

根据我自己的经验,我不会建议你偏离微软设计的模式 - 你以后最终会试图与模式作斗争(也许赢)。 我通常在项目中的不同文件夹中创建资源文件。默认情况下,它们将它们置于不同的名称空间中,因此我从来没有遇到过您提到的问题。 – 2011-04-20 13:42:33

+0

嗯,关于它的一点是,它看起来好像微软希望能够以我想要的方式处理它(分类)。为什么Visual Studio会自动将资源压缩到cs文件中,就像使用窗体和代码隐藏一样? – michael 2011-04-20 20:15:21

相关问题