对于C#资源,为什么Properties未定义?

时间:2009-09-29 22:13:41

标签: c# .net resources properties

当我尝试访问我的一个C#项目资源中的字符串属性时,出现以下错误:

'ORG.PRJ.MOD.MyClass2' does not contain a definition for 'Properties'

产生错误的代码是:

string s = MyClass2.Properties.Resources.TestString2;

真奇怪的是,我的解决方案中的另一个项目(使用MyClass和TestString)具有完全相同的设置不会产生错误并且像冠军一样工作。这是背景和我尝试的所有事情。

  1. 两者都是VS2008中的“Class Library C#”项目。
  2. 我通过右键单击 - >解决方案树中每个项目的属性创建资源字符串,然后选择“资源”选项卡。然后我在一个中输入了“TestString”,在另一个中输入了“TestString2”。
  3. 对于有效的项目,如果我键入MyClass。 - IDE IntelliSense告诉我“属性”是一个可用的成员(但这是它向我展示的唯一成员)。对于不起作用的项目,可用的成员是“Equals”和“ReferenceEquals”(它不会给我“属性”)。这似乎是SOMETHING与众不同的最大线索。
  4. 认为我的项目文件已损坏,我从头开始重新创建了两个项目。我删除了所有bin,obj和Properties文件夹,删除了所有Resources.resx和Resources.Designer.cs文件,删除了所有.csproj,.csproj.user,.sln和.suo文件。对于两个项目。然后我再次启动VS2008并使用File-> New->“Project From Existing Code ...”来创建新项目。然后我以完全相同的方式为两个项目添加了资源(按照上面的步骤2)。相同的结果。
  5. 我在两个项目(Resources.resx,Resources.Designer.cs,MyProj.csproj)之间的相应文件上执行了'diff'。除了我期望的结果之外,没有什么看起来不同(类名和字符串名称在它们之间有所不同)。
  6. 我用Google搜索了它。基于这种奇怪的感觉,毫无疑问我做了一些非常愚蠢的事情(见https://stackoverflow.com/questions/58640/great-programming-quotes/756768#756768)。

1 个答案:

答案 0 :(得分:6)

可以通过项目的默认命名空间访问Properties静态类。现在,鉴于它是一个类库,可能Class2(或者可能存在命名冲突,即通过拥有Class2.Class2),但有些东西告诉我我是你的库中的一个类,而不是命名空间(会产生你描述的错误)。