出现错误.. 从 .net 4.0 转换为 .net 3.5 时出现错误。

Posted

技术标签:

【中文标题】出现错误.. 从 .net 4.0 转换为 .net 3.5 时出现错误。【英文标题】:Getting Error.. Could Not Load File or Assembly 'System.Drawing,Version 4.0.0.0, Culture=natural...' error while converting from .net 4.0 to .net 3.5 【发布时间】:2013-03-06 15:22:23 【问题描述】:

我是 Windows 桌面应用程序开发的新手。

我使用 Visual Studio 2010 创建了一个应用程序,其中我使用了一个表单进行数据输入。一种带有报表查看器控件的表单和一个用于绘制报表的报表 (.rdlc) 文件。

我的问题是我想让我的应用程序与 dot net framework 3.5 兼容。为此,我已将项目属性中的“高级编译选项...”中的目标框架更改为 3.5。但是在将目标框架更改为 3.5 后运行应用程序时出现错误是:

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Line 123, position 5. C:\Users\Amir\Desktop\Bill_System\Bill_System\Bill_System\My Project\Resources.resx Billing_System

如何解决这个错误?

请帮忙。提前致谢。

【问题讨论】:

这与 OP 的情况无关,但如果您在使用 ResourceWriter 类将 .resx 文件转换为 .resource 文件时遇到此错误,请参见此处:@ 987654321@ 【参考方案1】:

您收到以下错误:

“无法加载文件或程序集 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。系统找不到指定的文件。第 123 行,位置 5。”

此错误是由于 system.drawing 程序集的 .dll 路径不正确,下面的第 2 行肯定适合您。 OW请在您的系统中找到路径。

    与您的系统相关的“C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Drawing.dll”

    [Void][System.Reflection.Assembly]::LoadFile("C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Drawing.dll")

【讨论】:

【参考方案2】:

您引用的是框架 4.0 的 System.Drawing 程序集(您可以从错误中读取)而不是 3.5

您必须找到您的 System.Drawing 参考并将其更改为 3.5。

最简单的方法是:

    打开你的项目 转到解决方案资源管理器 扩大参考组 删除System.Drawing 引用 右键单击参考组 添加参考 在“.NET”选项卡上,搜索System.Drawing 以添加正确的引用

【讨论】:

【参考方案3】:

这是一个资源问题,从异常消息中可以看出,它们还依赖于框架版本。仅更改项目的目标版本不会更改。

在文本编辑器中打开 Resources.resx 文件,记事本就可以了。搜索“4.0.0.0”并将其更改为“2.0.0.0”。这可能无法解决问题,一些资源被二进制序列化并嵌入为 .resx 文件中的 base64 编码字符串。您很容易将它们识别为长字符串。您需要使用 Visual Studio 资源编辑器修复这些问题,将其删除并重新添加。

【讨论】:

先生,我需要您的更多帮助,有一个包含报表查看器控件的表单。当我从我的应用程序中单击报告按钮时,它会给出error。 @Hans Passant

以上是关于出现错误.. 从 .net 4.0 转换为 .net 3.5 时出现错误。的主要内容,如果未能解决你的问题,请参考以下文章

从 .net 2.0 转换到 4.0 后对性能问题进行故障排除

无法从 int 转换为 asp.net 中的礼品卡分页错误

将 .net 4.0 语法 OfType 转换为 .net 3.5

将连接字符串从 Microsoft.Jet.OLEDB.4.0 转换为 Microsoft.ACE.OLEDB.12.0 提供程序

将项目的 .NET 目标框架从 4.0 更改为 3.5 后找不到文件(或程序集)

转换为 Visual Studio 2010 / .Net 4.0 后 app.config “找不到架构信息”