如何改变.NET框架
问题描述:
如何变化的.NET框架时迁移.resx文件......当如何改变.NET框架
我改变了.NET框架4.0〜3.5(因为incompatbility我们发现迁移.resx文件在第三方DLL),一切都很好,除了一些.RESX文件搞砸了。我正在开始手动修复它们,但是有一些工具可以用于此目的吗?或者你们怎么做?
答
与“impr0t”(做一个全局替换)相同,但通常RESX文件中会出现此问题:“无法加载程序集...或其某个依赖项。尝试加载具有无效结构的程序”它会指向这样的事情在您的RESX文件:
<metadata name="icons_20.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>115, 17</value>
</metadata>
<data name="icons_20.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value> AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
...
...
... AQEB7wL/BwABeAEBAeAJAAFwAQAB4AkAAWABAAFgCQABQAEAAWALAAEgCwABIDsAASAJAAFAAQABIAkA
AUABAAEgCQABYAEAAWAJAAFwAQAB4AkAAXgBAQHgCQABfAEHAeALAAEPAv/3AAs=
</value>
</data>
所以修复程序描述如下:
从该网站:
解决方法
- 打开窗体设计器中,使所需的图形用户界面的变化。关闭设计器并保存
- 编译项目并收到RESX编译错误(只有带Imagelist的窗体应该有这个问题)
- 双击resx编译错误打开resx文件。
- 滚动到图像流的顶部。
- 编辑图像流的顶线:AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w TO AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
- 关闭并保存的resx文件并重新编译。
**注:唯一的区别是,在结束“j00LjAuMC4w”到‘j0yLjAuMC4w’
答
我通常刚刚通过并编辑了xml。
.NET 4.0
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
.NET 2.0
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
,如果你只是做一个找到&代替它并不需要太长时间的事情。在重新编译时,一切看起来都很顺利。
+0
是的,这就是我通常所做的,但是这次我其实在这个问题上做到这一点(见我的答案)时有错误。只是想知道是否有一些我们应该使用的工具,而不是像我们正在做的那样手动执行... – Denis 2012-03-12 17:32:58
应该不会出现从3.5的资源文件的问候迁移到4.0的任何问题人物做了什么该文件包含什么并且搞乱了什么? – Svarog 2012-03-12 15:59:19
@Svarog,不是真的。当针对.NET 3.5时,RESX文件中的大多数条目都会引用版本为2.0的系统DLL,当针对.NET 4.0时,它们将全部引用相同的DLL,但与版本= 4.0。这就是问题所在,你需要手动修改这些问题以及任何可能出现的问题(请参阅下面的答案) – Denis 2012-03-12 17:30:07