在.NET 1.1中调用.NET 2.0程序集

3
最近我在.NET 2.0版本中开发了一个内部框架,基本上是类和辅助工具。
问题是我有一些.NET 1.1的站点和应用程序,想要从中使用我的框架。我知道我不能在.NET 1.1中调用.NET 2.0,但我有一个想法。
如果我创建另一个带有ComVisible的2.0项目,并引用一些我的2.0程序集,然后只引用这些类重新创建所需的函数,并在.NET 1.1中调用这个新的ComVisible程序集,那么我能否在.NET 1.1中使用2.0程序集呢?
如果这样可以的话,我基本上可以在.NET 1.1、Java Reflection等中使用它。
还是说我在浪费时间?
1个回答

1

我不明白您为什么要花费这么大的努力。只有两种可能性:

  1. 运行这些站点/应用程序的服务器/工作站已安装了.NET Framework 2.0,此时您最好将这些站点/应用程序重新定位到.NET 2.0并重新构建/部署它们(这应该只需要10分钟),或者

  2. 如果服务器/工作站没有安装.NET Framework 2.0,则所有COM的努力都是徒劳无功,因为2.0程序集本身没有Framework将无法运行。

最近我将一整批“遗留”的2.0应用程序改为3.5,进行了上述第一步操作,没有遇到任何问题。我知道从1.1转向2.0可能会有少量破坏性更改,但数量非常少,几乎肯定比处理所有COM相关问题的时间还短。


1
但是3.5是2.0的扩展,迁移过程中没有任何问题。从1.1到2.0,很多功能被弃用或者签名发生了变化。而2.0不是“遗留版本”,它是一个重大的发布版本。 - pedrofernandes
我不太理解你的评论。.NET 3.5是一个新的框架版本,有不同的编译器和所有内容,它不再是2.0的扩展,就像2.0不是1.1的扩展一样。 一些1.1功能在2.0中已被弃用,但这并不妨碍您在过渡期使用它们,并且方法签名肯定得到了保留。 至于“遗留”评论,鉴于.NET 4.0几乎最终完成,我认为可以说2.0是“遗留”的; 1.1是“古老的”。 - Aaronaught
3
.NET 2.0是一个主要版本的框架,与.NET 1.1具有不同的CLR,因此它实际上是一个具有一些API更改的不同框架(当然也包括1.1和1.0)。另一方面,.NET 3.0和3.5只是使用与.NET 2.0相同的CLR的一组新程序集(和编译器)。参考: https://dev59.com/O3VC5IYBdhLWcg3wsTVi - alejofv
足够公平,但从技术上讲,1.0和1.1也是不同的CLR版本,并被归类为点发布。我的观点是:进行2.0重新定位极不可能破坏任何东西。至少,为什么不试一下呢?如果无法编译,则回滚即可。 - Aaronaught
@Aaronaught:重新定向(即重新编译)2.0版本肯定是可行的,但是从1.1 => 2.0存在许多破坏性变化(请参见http://msdn.microsoft.com/en-us/netframework/aa570326.aspx),其中一些可能相当恶劣(只能在运行时检测到)。升级肯定是正确的选择,但必须花费一些时间来调查是否有任何问题影响您的代码。 - jeroenh

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