在 Release 模式下构建时出现混合模式错误

5
我有一个C# asmx服务项目,原本是在framework 2和vs 2008下运行的,现在我把它更新到了framework 4和vs 2010。
当我以debug模式构建dll时,它可以成功编译,但是当我以release模式构建时,就会出现以下错误:
Error 51 Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information. C:\Service\MycService\SGEN
更新: 好吧,我从项目属性中更改了框架为3.5,以release模式构建成功了,但是在4.0框架中有什么问题呢?我需要它能在4.0框架下正常工作。

在项目设置中,您是否看到在配置管理器或Build部分中构建的方式有所不同? - Davin Tryon
你可以在https://dev59.com/aW865IYBdhLWcg3wCqBA找到答案。 - Ravi Vanapalli
@Ravia 这个答案是针对一个拥有 app.Config 文件并设置了 useLegacyV2RuntimeActivationPolicy 的 Windows 应用程序的,而我的应用程序是 Web 应用程序。你的意思是我需要在我的 webconfig 中添加 useLegacyV2RuntimeActivationPolicy 吗? - Ali Hasan
3个回答

13

我搞定了它 通过进入项目->右键单击->属性->生成->生成序列化程序集 在这里将值更改为“关闭” 并在发布模式下构建,现在它可以工作了


我做了同样的事情,它起作用了。但是你知道原因吗? - SaraNa
@SaraNa 我认为混合模式程序集不能被 .NET 4.0 应用程序设计所使用,这就是为什么我们需要关闭 "Generate Serialiazation Assembly"。 - Ali Hasan

1

你的解决方案中是否有非托管代码,或者是否针对其中一个进行构建?
当我们转向使用VS2010和.net 4时,在工作中遇到了这样的问题。
对我们起作用的是将App.config文件添加到项目中,其中包含以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

0

我在configuration标签下添加了以下内容,但问题仍然存在: <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> - Ali Hasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接