首页 > 解决方案 > C# Localization = true 原因“属性‘文本’的代码生成失败。”

问题描述

我有一个已经存在 20 多年的解决方案。我已将我的问题归结为最低限度:如果我创建一个干净且未经编辑的 Windows 窗体,我将无法在没有收到提示且无法保存的情况下将 Localization 更改为 True:

属性“文本”的代码生成失败。你调用的对象是空的。

仅当表单位于特定项目/命名空间中时才会发生这种情况。如果我将文件移动到名称空间更改的不同项目,它可以工作。在任何其他项目中创建新表单都按预期工作。

“文本”指的是每种形式的标题变量。

它创建了一个 (1) .resx 文件,但似乎没有使用它。至少,我无法使用多种语言(没有 .en.resx 或其他)。

所以......一个表单怎么会受到简单的影响而只是在同一个项目/命名空间中?想法?

标签: c#winforms

解决方案


该项目还有另一个 resx,它已经存在了一段时间,并且由于迁移到较新的 Visual Studio 版本而损坏。我在某处发现了一个页面,指出这可能发生在 ~vs2005 左右。无论如何,就我而言,我手动删除了项目中 resx 文件中的这些行(这不是我想要更改的表单的 resx 文件)。

  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="CommonMyProjectGui" type="System.Resources.ResXNullRef, System.Windows.Forms">
    <value />
  </data>

然后它又起作用了。

笔记; 我发现谈论其他变量的评论可能会受到影响,所以分而治之,看看其他变量是否受到影响。


推荐阅读