1

谢谢大家的时间。

我正在使用 C# .Net 4.0 和 Visual Studio 2010 Professional。我在表单上有几个按钮、一个富文本框和一个拆分容器。没有很多代码,目前它并没有真正做太多。解决方案中有两个项目:将它们称为 MyProject 和 MySupportProject。该表单位于 MyProject 项目中。

每隔一段时间,当我尝试运行该程序时,就会出现两个错误:

'MySupportProject.Properties.Resources' is inaccessible due to its protection level
'MySupportProject.Properties.Resources' does not contain a definition for String1'

所以我去看看设计器,由于某种原因,它一直在填写以下内容:

this.rtbStatus.Text = global::MySupportProject.Properties.Resources.String1;

我不知道为什么。我删除它或将其注释掉,它会继续生成该行。表单中的 RTB (RichTextBox) 没有与之关联的文本。

在解决方案属性中,MySupportProject 被列为 MyProject 的依赖项,但我终其一生都无法弄清楚它试图用那个特定的不可见字符串对这个特定的 RichTextBox 做什么。我稍微查看了 MySupportProject 中的资源并找到了定义:

    /// <summary>
    ///   Looks up a localized string similar to .
    /// </summary>
    internal static string String1 {
        get {
            return ResourceManager.GetString("String1", resourceCulture);
        }
    }

看起来上面的定义是由某个工具生成的,但我真的不确定它来自哪里。有人在我之前做过这个项目,所以他们可以把它放进去,但我从头开始制作表格,我没有建立联系。有没有人遇到过类似的问题?如果没有,我还应该尝试阻止这种烦人的偶尔构建失败吗?感谢你的帮助!

4

1 回答 1

1

我不完全知道这背后的原因,但你可以用这个替换该行:

this.rtbStatus.Text = "";

或者:

this.rtbStatus.Text = null;

另外,尝试删除您的字符串资源。如果你不能这样做:

  1. 检查资源文件中是否存储了任何其他资源。
  2. 如果是,则将所有其他资源复制到新资源文件中并删除旧文件。
  3. 如果没有,那么只需删除旧的资源文件 (.resx) 并创建一个新的资源文件。
于 2012-10-03T18:49:10.657 回答