我想改变我的C#项目,它基于.NET 4.0到3.5.所以我将项目的目标框架更改为3.5.
重新打开并尝试编译项目后,我收到错误:
无法找到文件或程序集"System.Drawing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其中一个依赖项.系统找不到该文件.odereineAbhängigkeitdavonwurde nicht gefunden.Das System kann die angegebene Datei nicht finden.
这发生在Resource.resx文件中,如下所示:
..\Resources\traktor_connected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\traktor-not-connected.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
stack72.. 5
该引用指向.Net 4 - 您需要删除所有.net 4引用,然后使用.net 3.5版本的组件读取它们然后它将工作
保罗
该引用指向.Net 4 - 您需要删除所有.net 4引用,然后使用.net 3.5版本的组件读取它们然后它将工作
保罗
更改目标框架设置并不完美.例如,在C#项目中,您必须手动删除对Microsoft.CSharp的引用.是的,它不会自动更新.resx文件中的System.Drawing程序集引用.这是一个相当大的缺陷,当你增加 .NET版本号(几乎每个人通常都会这样做)时可以正常工作,kaboom如果你试图减少它..NET只是向前兼容.
在更改目标框架后,您必须删除资源并将其添加回来.非常痛苦,可以手动编辑.resx文件以最小化工作.右键单击.resx文件,打开方式,然后选择文本编辑器.将程序集名称的版本从4.0.0.0更改为2.0.0.0.
但请注意,可能存在比较复杂的资源,如ImageList,其数据以二进制形式嵌入.resx中.您将在.resx文件中看到一小块base64编码的字节.它也嵌入了版本号,由BinaryFormatter完成.VS不会为你做这件事的可能原因.编写一个将base64字符串解码回byte []的小程序,找到正确的0x34并将其更改为0x32并将其转换回base64只是一个黑客的喜悦,男人超过机器风格:)最好只重新添加到避免几乎不可避免的oopses.