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

e-h*_*der 2 .net c# resources properties

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

'ORG.PRJ.MOD.MyClass2' does not contain a definition for 'Properties'
Run Code Online (Sandbox Code Playgroud)

产生错误的代码是:

string s = MyClass2.Properties.Resources.TestString2;
Run Code Online (Sandbox Code Playgroud)

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

  1. 两者都是VS2008中的普通"类库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搜索了它.基于如何离奇这种感觉,毫无疑问,我已经做了一些愚蠢的疯狂(见/sf/ask/4104831/#756768).

Mat*_*ley 6

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