在.Net Framework 3.5启动项目

时间:2017-01-18 22:30:50

标签: .net vb.net .net-3.5 .net-4.5

我们有一个在3.5版本的.Net Framework中构建的项目。我们将此项目更新为.Net Framework的4.0版本,在我们解决了所有问题之后,我们注意到Web服务初始化期间出现了显着的延迟。

我们将项目还原为3.5框架并解决了我们的滞后问题。我们有第二个项目依赖于使用4.5 Framework dll,因此第二个项目需要在4.5版本中构建。

我知道之前已经问过这个问题,答案一直是不可能的 - 但这是可能的,因为我们实际上有这个确切的结构按照下面msdn论坛上提供的步骤工作,但是只使用<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6">运行时而不是仅显示4.0。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/36b1a209-55d5-4323-91dc-0919ba2e1d03/using-methods-of-a-net-40-dll-by-net-35sp1-client?forum=clr

问题是我们重新添加了一个全新的服务调用到我们的Web服务,现在当我们尝试访问项目引用时,它会抛出一个错误,它正在访问一个基于较新版本构建的项目, BadImageFormatException。

在上面的论坛中讨论了这个确切的错误,并声明您需要在<startup>部分中将标准2.0参考和4.0参考包括为<supportedRuntime>,并且我们同时包含他们在。

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

我认为问题是app.config没有加载两个运行时。我认为这种情况正在发生,因为如果我们按照以下方式切换supportedRuntimes的顺序......

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

我们在尝试访问任何3.5 Framework引用时都会出现错误。

现在,添加supportedRuntime的顺序很重要 - 在第二组代码中,它更倾向于使用4.5版本而不是3.5 Framework,但它应该尽可能使用3.5 Framework,对吗?我可以离开这里,但就像我说我们有这个工作 - 不幸的是我没有为我的代码集创建一个标签,所以我不能只回到工作代码集。

任何人都可以想到我可能遗失的任何内容,或者有人能告诉我是否可以专门告诉一组代码在vb.Net中使用4.5 Framework?

1 个答案:

答案 0 :(得分:0)

我非常确定您至少在运行时只需要一个受支持的运行时,因为每个进程只加载一个运行时。

我非常有信心,因为我一直使用最新框架上运行的3.5编译DotLisp,所以我可以访问DotLisp REPL中的最新内容。