C# 运行时异常System.BadImageFormatException

C# 运行时异常System.BadImageFormatException,c#,.net,badimageformatexception,C#,.net,Badimageformatexception,请帮帮我,我已经想尽一切办法来解决这个问题了 在您回复之前,请注意: 从StackOverflow.com上的其他问题和web上的其他软件,我已经尽了我所能。例如但不限于:将构建配置从“任意CPU”更改为“x64”,甚至更改为“x86”。另外,还将目标版本从.NET 4.0更改为.NET 3.5(这不起作用,因为我使用的是System.Windows.Interactivity,它需要.NET 4.0),因此我一直使用.NET 4.0。所以请不要给我一个答案告诉我这样做,因为我已经尝试了各种组合

请帮帮我,我已经想尽一切办法来解决这个问题了

在您回复之前,请注意:

从StackOverflow.com上的其他问题和web上的其他软件,我已经尽了我所能。例如但不限于:将构建配置从“任意CPU”更改为“x64”,甚至更改为“x86”。另外,还将目标版本从.NET 4.0更改为.NET 3.5(这不起作用,因为我使用的是System.Windows.Interactivity,它需要.NET 4.0),因此我一直使用.NET 4.0。所以请不要给我一个答案告诉我这样做,因为我已经尝试了各种组合


我在VS2013中有一个名为TimersXP的项目,它是CodePlex.com上的一个开源项目:

它构建时没有任何错误,但我得到一个运行时异常: System.BadImageFormatException未处理 消息:未知模块中发生类型为“System.BadImageFormatException”的未处理异常。 其他信息:无法加载文件或程序集“TimersXP.exe”或其依赖项之一。此程序集由比当前加载的运行时更新的运行时生成,因此无法加载

有一点历史,该项目最初是.NET 3.5,但当我发现我必须添加System.Windows.Interactivity并且必须支持.NET 4.0时,我增加了版本号

<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries\System.Windows.Interactivity.dll</HintPath>
  <Private>False</Private>
</Reference>

假的
C:\Program Files(x86)\Microsoft SDK\Expression\Blend\.NETFramework\v4.0\Libraries\System.Windows.Interactivity.dll
假的
是的,我知道上面写着4.5.0.0版。我也尝试过这种组合。除非我错过了一些与预期不同的组合

它是开源的,所以项目的所有代码都是可用的,有人能帮我吗?恐怕我没有主意了

可能在App.config文件中包含此版本号

<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

我不想只看一遍所有的代码,然后把每个地方的版本都改成3.5、4.0或4.5。那似乎不是个好主意


像往常一样,一旦我看到它,我可能会想踢自己

奇怪的是,在我的例子中,我的项目属性已经显示为4.5.2,但我的app.config仍然显示运行时版本为2.0。我右键单击项目>选择项目属性>首先将目标框架更新为4.5.1,然后更新为4.5.2。这就成功了,并更新了app.config,如下所示:

之前:

<startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>

之后:

<startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>

我在一个超级简单的控制台应用程序上也遇到了类似的问题,但我的问题是因为它依赖于一些只设置为x86的库,并且它不能在任何CPU上运行

修复程序:将我的控制台应用程序更改为也仅基于x86配置,它就成功了

System.BadImageFormatException was unhandled
Message: An unhandled exception of type 'System.BadImageFormatException'     occurred in Unknown Module.
Additional information: Could not load file or assembly 'My.Assembly,     Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its     dependencies. An attempt was made to load a program with an incorrect format.

另请参见:

我删除了

<startup>
    <supportedRuntime version="v2.0.50727"/>
</startup>

从配置和应用程序的部分工作


我假设该语句将应用程序限制为框架2,而它需要2和4。

在所有参与的程序集上运行
corflags
,您将很快看到,哪一个在工作中格式错误。将发布结果。感谢您需要加载正确版本的CLR。应用程序配置支持的运行时为2.0版。您需要将其更改为使用4.0。有关正确配置的详细信息,请参阅。您也可以删除应用程序配置,因为其中没有任何其他内容。嘿,Mike Z,您介意将您的解决方案转换为答案,以便我们关闭此问题吗?谢谢。如果你在初次安装后(意思是在更新中)不移动应用程序配置,你会一直坚持这个问题,直到找到这个问题为止。。。。非常感谢。