代码之家  ›  专栏  ›  技术社区  ›  Blair McMillan

Visual Studio创建无效的Resx文件

  •  12
  • Blair McMillan  · 技术社区  · 15 年前

    Localizable 到真正的Visual Studio生成 .resx 使用表单名称(如您所料)提交。但问题是,它在.resx文件中添加了其他任何文件都无法打开的所有内容(例如WinRes、ResEx、Simple resx Editor、resx Editor等)。

    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。

    我安装的唯一扩展(根据扩展管理器)是:

    • Microsoft Ribbon for WPF(我在本项目中不使用它)

    加载项管理器不显示加载项。

    编辑:

    .雷斯 文件,问题实际上是第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中编辑任何内容,它会将其重置为 版本=4.0.0.0 .

    将目标框架设置为.NET Framework 3.5客户端配置文件 这样Visual Studio就不会覆盖这个版本。这是一个解决方法,意味着我不能使用.NET4.0功能。

    我猜是不是.NET框架中有一个bug,或者每个.resx编辑器(包括微软的)都有。

    编辑2: 结果发现,当我试图使用微软的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

    5 回复  |  直到 15 年前
        1
  •  6
  •   Paweł Dyda    15 年前

    Visual Studio创建正确的*.resx文件。问题是,您试图使用的工具是为规范的早期版本创建的。这就是为什么你的解决办法有效。

        2
  •  5
  •   Pwnstar    9 年前

    有时在特定情况下,windows窗体设计器在使用*.resx文件验证窗体时崩溃。

    . 在我的例子中,我得到了一些数据集作为网格、组合的数据源。。。

    所以我打开了设计器,但它没有告诉我它不能打开,因为名为blabla的控件有问题

    在检查设计器文件之后,我发现控件没有任何问题,它只是指向错误源的*.resx文件,因为 我重构了 数据集。所以 由于此重构,*.resx尚未更新

    我打开了*.resx文件,只需搜索控件的标识符,就找到了Base64编码的代码。 将解决此控件的问题,因为windows窗体设计器将自动刷新丢失的内容并将其读取到*.resx文件。

        3
  •  3
  •   servermanfail    15 年前

    在.resx中,找到base64编码字符串的第一行。结尾应该是“j00LjAuMC4w”(意思是.net 4.0)。尝试将其更改为“j0yLjAuMC4w”(意思是.net 2.0)。为我工作。多亏了路易斯麦克 http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020#

        4
  •  0
  •   Caio Pimentel    11 年前

    当编译器丢失了某个对象的引用,或者当您更改了该对象的重要属性时,就会出现此错误,例如,如果您在“窗体全部”设置中有一个网格(这意味着您正在使用数据集作为数据源来完成网格),并且您更改了数据集的名称,而不是丢失了此链接,他会给你带来这个信息。

        5
  •  0
  •   RAINA    7 年前

    我刚删除了.RESX文件中的se行

    <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken="" />
    
    推荐文章