【发布时间】:2011-05-07 03:40:43
【问题描述】:
我想要本地化一个非常简单的表单(实际上我在这个项目中有很多,它们都有相同的问题)。当我将表单属性 Localizable 设置为 true 时,Visual Studio 会生成一个带有表单名称的 .resx 文件(如您所料)。但问题是它在 .resx 文件中添加了其他任何东西都无法打开的东西(例如 WinRes、ResEx、Simple Resx 编辑器、RESX 编辑器等)。
我得到的错误是:
ResX 文件类型 System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 第 125 行的数据,位置 4 无法定位。 第 127 行,位置 5。无法解析。
第 124 到 127 行是:
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lblUsername.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 24</value>
</data>
现在我假设 Visual Studio 正在添加此功能,以便我可以根据语言移动按钮等(我不需要或不想要此功能)。但是,它会在除 Visual Studio 之外的每个编辑器其他中引发上述错误。
我安装的唯一扩展(根据扩展管理器)是:
- 突出显示所有出现的选定单词
- 用于 WPF 的 Microsoft 功能区(我没有在此项目中使用)
插件管理器没有显示插件。
编辑:
在挖掘并手动编辑.resx 文件后,问题实际上出在第124 行<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 特别是Version=4.0.0.0。
如果我将其设置为Version=2.0.0.0,那么在 Visual Studio 和所有外部程序中一切正常。但问题在于,如果我在 Visual Studio 中编辑任何内容,它会将其重置回 Version=4.0.0.0。
暂时我将将目标框架设置为 .NET Framework 3.5 客户端配置文件,以便 Visual Studio 不会覆盖该版本。这是一种解决方法,意味着我无法使用 .NET 4.0 功能。
我猜是不是 .NET Framework 中存在错误,或者每个 .resx 编辑器(包括 Microsoft 的)都存在错误。
编辑 2: 事实证明,当我尝试使用 Microsoft 的 WinRes.exe 工具时,我实际上是在启动 .NET Framework 3.5 版本,因为没有安装 .NET Framework 4.0 版本。
我必须从http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/winsdk_web.exe 安装 .NET Framework 4.0 SDK,然后才能使用 WinRes.exe 4.0 编辑 .resx 文件
【问题讨论】:
-
您是否执行了“PublicKeyToken=REMOVED”或者是确切的错误消息?那里的绘图也拼写错误。
-
这是我输入的。我将对其进行编辑并将其重新添加。我猜公钥在那里没有害处。
-
@Blair McMillan:反正不是你的 :)
-
@Blair McMillan:我怀疑这两个数字之间的
,会导致某些文化出现问题。 -
@leppie:我不明白为什么 VS 会生成无效代码。我什至不想要那个选项,反正我只想要文本字符串。
标签: visual-studio winforms visual-studio-2010 localization resx