Mixed mode assembly is built against version 'v1.1.4322'
我在这里包含的C.NET 4.0应用程序中包含了一个DirectX播放器(answer2)。问题是,当我尝试初始化对象(即player mplayer=new player())时,会出现以下错误:
混合模式程序集是根据运行时的"v1.1.4322"版本生成的,如果没有其他配置信息,则无法在4.0运行时中加载。
有人知道它可能是什么吗?
- 重要提示:如果错误列"file"如SGEN发生,则修复程序需要位于sgen.exe旁边的文件sgen.exe.config中。例如,对于vs 2015,创建C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin
ETFX 4.6 Tools\sgen.exe.config。来源:sgen混合模式程序集最小文件内容:</configuration>。
我修复此错误的方法是从以下位置更改app.config上的"configuration"节点:
1 2 3
| <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup> |
对此:
1 2 3
| <startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup> |
- 感谢您对我们这些不修改app.config xml文件而不知道如何将该值设置为true的人做进一步的澄清。+ 1
- 不客气,杰克。当时,我必须自己找,所以我发现那里的人也可以使用额外的信息:)
- 谢谢古斯塔沃
- 上面的解决方案适用于我今天之前遇到这个问题的所有情况。如果有人发现自己继承了一个项目,而这个项目不起作用,而且你知道它应该起作用,那么一定要检查app.config=always或更新的"复制到输出目录",否则你会很沮丧。
您需要添加一个app.config文件,并将useLegacyV2RuntimeActivationPolicy设置为true。
这是在.NET 4应用程序中使用混合模式CLR 2程序集所必需的。
- 啊,谢谢!什么是混合模式CLR 2程序集?
- @巴德斯库对此也很好奇,这里有一个链接解释:msdn.microsoft.com/en-us/library/X0W2664K.aspx
- 谢谢巴达罗!
- 谢谢您!!!!!这是我遇到过的最奇怪的问题。在vs 2012.net 4.0中,当我初始化与此dll相关的任何类型的变量时,我的应用程序将挂起。我从没见过这样的东西。在我找到这个之前,找不到任何关于这个问题的信息!
- 谢谢,干得很好!
- 请原谅我的无知,但我也有同样的问题。我的问题是,你到底在哪里创建app.config文件?我在文件"dcexec.exe.config"中看到了文章中提到的相同的标记,但是在此处更改它并重新启动服务器,没有任何效果。
- @Neil它在主可执行文件app.config文件中。它必须位于运行的exe旁边,具有相同的名称等。
- @尽管在典型的Visual Studio项目设置中,有一个名为"app.config"的文件,位于项目的顶部文件夹(C.csproj或vb.vbproj文件旁边),Visual Studio会复制该文件,以成为主可执行文件的"myprojectname.exe.config"。至少这是我在2010年的对比中看到的。今天对WinForm应用程序C和VB都进行了尝试。
以下是可能的程序集配置:
2