项目参考文件解决方案:.NET 4.5和.NET 3.5

3
在这个线程的继续中:
将.NET 3.5与4/4.5程序集混合在同一个解决方案/项目中,我找到了一个解决方法:
http://social.msdn.microsoft.com/Forums/en-US/clr/thread/36b1a209-55d5-4323-91dc-0919ba2e1d03/
它的基本作用是让我的解决方案编译并确定每个项目在何种CLR下运行。
有人看到这样做的缺点吗?
它构建了项目,在我的第三方API上,必须运行在.NET 3.5上,我在其App.config中明确写入以使用CLR 2.0而不是4.0运行。
 <startup>
 <supportedRuntime version="v2.0.50727"/>
 <!--<supportedRuntime version="v4.0"/>-->
 </startup>

编辑:
我的主要应用程序使用的是 .net 4.5 和 C# 5 特性。我的第三方 API 运行在一个子进程中(我从主进程开始),该进程将连接到必须在 3.5 和 CLR2 上运行的 API。因此,我明确地定义了它们以 CLR2 的方式运行。


只要你没有使用任何依赖于v4+的功能,那就没问题。 - Dave Hogan
我认为这个问题取决于你的项目运行的平台。例如,如果它是一个Web应用程序,我发现在进行.Net 2.0 / 3.5代码时会出现很多问题,而相同的功能在4.0中被破坏并且无法工作。我想这是你需要进行完全回归测试以查看是否真正获得了好处的事情。顺便说一句,这是一个很好的问题。 - MethodMan
这是一个SDK。该SDK应支持.NET 4.5,它使用高级功能C#5。但我连接的第三方API是3.5和CLR 2,这是必须的。顺便说一下,它们在不同的进程中运行。 - ilansch
为什么不能使用AsyncBridge?它可以将所有项目保留在.NET 3.5中(尽管有一些限制)。http://omermor.github.com/AsyncBridge/ 和 https://www.simple-talk.com/blogs/2012/04/18/asyncbridge-write-async-code-for-net-3-5/ - Lex Li
1个回答

1

你的配置文件将加载.NET 2.0运行时,并且在某些时候加载.NET4.5组件时会失败。你真正希望你的应用程序在.NET4.5运行时中运行,并能够加载3.5组件。你应该尝试使用以下配置文件。

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

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