繁体   English   中英

C#2.0代码消耗使用C#3.0编译的程序集

[英]C# 2.0 code consuming assemblies compiled with C# 3.0

这应该是好的,因为CLR实际上没有改变?

运行C#2.0代码的盒子 .NET 3.5的推出。

背景是我们有一个Windows服务(使用VS2005构建的.NET 2.0 exe,部署到~150个服务器),它动态加载程序集(几乎像插件)来完成所要求的各种工作项。 每当我们推出新版本的总线逻辑时,我们只需将程序集放在FTP服务器上,Windows服务就知道如何检查,获取和存储最新版本。 现在使用VS2008和目标.NET 2.0构建新程序集,我们知道它可以正常工作。 但是,我们希望开始利用LINQ等C#3.0语言功能,并针对.NET 3.5定位程序集,而无需构建和部署新版本的Windows服务。

C#3和.Net 3.5添加了新的程序集,但IL保持不变。

这意味着使用.Net 2程序集,您可以编译和使用C#3,只要您不使用Linq或其他任何引用System.Linq或System.Core的内容。

yieldvar ,lambda语法,anon类型和初始化都是编译器的聪明之处。 它们产生的IL是交叉兼容的。

如果你可以引用3.5的新程序集,它应该都可以正常工作。

没有新版本的ASP.Net - 它应该仍然是2.0.50727 - 但你仍然应该编译为3.5

yield,var,lambda语法,anon类型和初始化都是编译器的聪明之处。 它们产生的IL是交叉兼容的。

微小的挑选点,但无论如何,产量是2.0特征。

这很有意思。 我昨天看了LinqBridge后,有人在这个论坛上向我提出建议,他们正在做类似的事情。

我发现奇怪的是,当Microsoft编译下来生成2.0 CLR所需的相同IL时,它将框架命名为2.0,3.0和3.5。 我本以为在2.0上添加版本会更有意义,但我想也很难让人们了解有不同版本的运行时,编译器和语言这一事实​​。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM