我有一些DLL在内部使用.net 3.5会更容易(利用Linq等)。我想在目前运行asp.net 2.0的asp.net网站上使用这些DLL。
这种情况可能吗?是否存在任何限制或陷阱(例如,asp.net不会调用返回.net 3.5对象的方法,如IQueryable)?
注意:当然,.net 3.5将安装在服务器上。
答案 0 :(得分:5)
为了扩展foosnazzy所说的,.NET 3.5(SP1)只是带有一些新程序集的.NET 2.0 SP2。不在网站上安装它的唯一原因是,如果该网站不能与.NET 2.0 SP2一起运行。
这与以前的方式非常不同 - 在.NET 1.0网站上安装.NET 1.1我负责打破网站,即使网站没有使用1.1 - 我已经安装了1.1所以我可以使用一个特定的工具。从.NET 1.1升级到.NET 2.0是一个更糟糕的噩梦。
但是微软从中学到了这一点。 2.0 .NET 3.5 SP1中的.NET版本都使用.NET 2.0公共语言运行时(CLR)。事实上,安装了3.5的人经常会惊讶地看到IIS设置,并看到他们的网站仍显示为运行.NET 2.0。但它是完全相同的.NET 2.0,只需应用两个服务包。任何不使用新程序集的站点都不会受到影响(超出了Service Pack的作用范围)。
为了进一步重申已经说过的话 - C#3.0功能独立于框架。例如,您可以在纯.NET 2.0代码中使用匿名类型和lambda。 无法做的是使用LINQ,因为这需要.NET 3.5中的新程序集。
答案 1 :(得分:3)
您可以在.net 2.0中使用C#3的许多功能,但Linq不是其中之一。您必须包含Linq DLL,不允许单独分发,并且必须安装完整的3.5运行时。
注意:如果安装了.net 3.5,我认为如果站点未配置为包含3.5的程序集,您将遇到问题。它可以在Web应用程序项目中工作(而不是Web窗体项目),因为dll是预先编译的,可能包含PE文件中的必要引用,但我不确定。
答案 2 :(得分:2)
3.5添加到2.0框架,一切都完全向后兼容。
答案 3 :(得分:2)
始终有LinqBridge,它允许您在.Net 2.0环境中使用Linq To Objects。但是,在ASP.Net中使用它有一些警告,具体取决于您使用的是ASP.NET Web应用程序还是ASP.NET Web站点项目。有关详细信息,请参阅this page。