请帮助,我已经尝试了其他一切我能想到的解决这个问题的方法。
在您回复之前请注意:
我已经从StackOverflow.com上的其他问题和网络上的其他问题做了我所能做的一切。例如但不限于:将构建配置从“任何CPU”更改为“x64”甚至更改为“x86”。并且还将目标版本从.NET 4.0更改为.NET 3.5(这不起作用,因为我使用的是需要.NET 4.0的System.Windows.Interactivity)所以我更倾向于使用.NET 4.0。所以请不要回答告诉我这样做,因为我已经尝试了各种组合。
我在VS2013中有一个名为TimersXP的项目,它是CodePlex.com上的一个开源项目: https://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>
是的我知道它说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。这似乎不是一个好主意。
像往常一样,一旦我看到它,我可能会想要踢自己!
答案 0 :(得分:10)
奇怪的是,在我的情况下,我的项目属性已经显示为4.5.2但我的app.config仍然显示运行时版本为2.0。我右键点击了项目&gt;选择项目属性&gt;首先将目标框架更新为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>
答案 1 :(得分:9)
我有一个类似的问题,还有一个超级简单的控制台应用程序,但我的结果是因为它依赖于一些仅设置为 x86 的库,并且它不会起作用的 AnyCPU 强>
修复程序:将我的控制台应用程序更改为 仅构建在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.
答案 2 :(得分:4)
我删除了
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
配置和应用程序的部分工作。
我认为该声明在需要2和4时将应用限制为框架2。