【问题标题】:Mixed mode assembly is built against version X and cannot be loaded in version Y of the runtime without additional configuration information混合模式程序集是针对版本 X 构建的,如果没有额外的配置信息,则无法在运行时版本 Y 中加载
【发布时间】:2012-04-04 01:29:19
【问题描述】:

在做了一些代码重构之后,我的 VS2010 VB.Net Web Application 项目已经停止编译,出现以下错误:

“混合模式程序集是针对运行时版本‘v1.1.4322’构建的,如果没有额外的配置信息,则无法在 4.0 运行时中加载。”

在Visual Studio的错误列表的'File'栏中是'SGEN'这个词,但是当我双击时,该文件不存在(“无法打开该文档。它已被重命名,删除或移动.") 我认为它与序列化有关,但需要的附加配置信息是什么?我花了几个小时研究这个错误,每个人都说将以下内容添加到 app.config 文件的配置选项卡中:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

但是,我已将此添加到我可以找到或创建的每个配置文件中,但到目前为止它没有帮助。

我怀疑问题的一部分可能是 Crystal Reports,其 DLL 确实是针对 dot net v1.1.4322 构建的。

我应该将 legacyRuntime 配置添加到哪个配置文件?这甚至是正确的解决方案吗?

【问题讨论】:

    标签: crystal-reports assemblies runtime version sgen


    【解决方案1】:

    我通过在我的应用程序配置中将“生成序列化程序集”从“自动”更改为“关闭”来编译项目。互联网上关于 useLegacyV2RuntimeActivationPolicy 的建议似乎是我的情况的红鲱鱼。

    【讨论】:

    • 此应用配置在哪里找到?
    • 可能取决于您使用的 Visual Studio 版本,但对我(VS2010 Pro)来说,它是右键单击项目 -> 点击属性 -> 编译 -> 高级编译选项... - > 生成序列化程序集是一个下拉菜单。
    • 你是F****人!!!! “可能取决于您使用的 Visual Studio 版本,但对我(VS2010 Pro)来说,它是右键单击项目 -> 点击属性 -> 编译 -> 高级编译选项... -> 生成序列化程序集是一个下拉菜单。”是关键!!!
    • 这对我来说适用于 Visual Studio 2017。谢谢@pabrams
    猜你喜欢
    • 2012-02-26
    • 2012-08-11
    • 2012-08-03
    • 2013-01-08
    • 1970-01-01
    • 2011-09-19
    • 2023-03-24
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多