【问题标题】:c# change framework errorc#更改框架错误
【发布时间】:2011-08-25 01:15:09
【问题描述】:

我正在运行 Visual Studio 2010。 我只是将项目的框架从 4.0 更改为 3.5。我删除了它要求我删除然后尝试编译的参考 Microsoft.Framework。我现在得到错误:

错误 1 ​​无法加载文件或 组装'System.Drawing, 版本=4.0.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。系统 找不到指定的文件。线 123、位置 5. C:\Users\\Documents\Visual Studio 2010\Projects\\\Properties\Resources.resx 123 5

我知道它指的是我的 resources.resx 文件中的代码:

<resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="pix-300x300" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\pix-300x300.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="pix2" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\pix2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="pix4" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\pix4.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="pix3" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\pix3.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>

既然我的框架是 3.5,我该如何纠正这个问题?

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?
  • 我有一些错误,但最初为 .net 2.0 创建的项目在它工作之前,但在一些 Visual Studio 更新后它会中断。 System.Drawing 4.0 存在吗?

标签: c# .net frameworks compilation


【解决方案1】:

您可以尝试通过右键单击 .resx 文件并从上下文菜单中选择“运行自定义工具”来重新生成文件。

编辑:在执行此操作之前,更改访问修饰符或添加新值以强制重新生成。

另一个编辑:请参阅Downgrade an application from .net 4.0 to 3.5 了解另一种可能性

【讨论】:

  • 当我这样做时,我仍然得到同样的错误。我的代码似乎没有任何变化。
  • 更改访问修饰符或添加新值以强制重新生成
  • 我进入 resrouces.resx 文件并将访问修饰符从 internal 更改为 public 并按 F5。然后我尝试再次运行自定义工具。没有运气
  • 我将 useLegacyV2RuntimeActivationPolicy="true 添加到我的启动文件夹,但我仍然收到错误。
  • 我解决了这个问题。必须将所有 Version=4.0.0.0 更改为 Version=2.0.0.0 并添加 useLegacyV2RuntimeActivationPolicy="true to my startup
【解决方案2】:

我遇到了Visual Studio bug,它给我带来了类似的问题。我使用这个解决方法来解决它:

似乎可行的解决方法是 手动更改其中的一个字符 图像流每次 用户控件或表单在 设计师

<data name="icons_20.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
     AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

改成

     AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

00LjAuMC4w在行尾返回0yLjAuMC4w000y)

但每次我以这种形式更改某些内容时,我都必须解决这个问题。

【讨论】:

  • 我没有看到我会在哪里进行更改。能不能说的具体点?
  • 在我的情况下,单击错误将我直接带到那一行。我刚刚将j00 更改为j0y
  • 这是错误带给我的地方 "..\malware2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
  • 我要去开会。一小时后回来。谢谢大家的帮助!
  • 我解决了这个问题。必须将所有 Version=4.0.0.0 更改为 Version=2.0.0.0 并添加 useLegacyV2RuntimeActivationPolicy="true to my startup
【解决方案3】:

对此不确定,但由于其他答案没有帮助,请尝试此操作。文件中的 Version=4.0.0.0 告诉编译器使用 .net 4.0 程序集。尝试将它们更改为 Version=3.5.0.0Version=2.0.0.0 看看是否可以解决问题。

【讨论】:

  • 谢谢。我解决了这个问题。必须将所有 Version=4.0.0.0 更改为 Version=2.0.0.0 并添加 useLegacyV2RuntimeActivationPolicy="true to my startup
【解决方案4】:

这个问题很久了,我对微软修复这个错误失去了希望。然后我开始使用手动编写的代码来处理资源中包含的图片:

string resource = "Company.Namespace.Resources.picture.gif";
pictureBox1.Image = new Bitmap(Assembly.GetExecutingAssembly()
.GetManifestResourceStream(resource));

不要忘记将 picture.gif 的属性“构建操作”设置为“嵌入资源”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多