管理.NET框架升级

时间:2010-12-17 19:44:24

标签: .net project-management

这更像是一个“项目管理”问题。如果这不是发布到的网站,我很抱歉,但我不知道在哪里发帖。

假设您在大量客户正在销售和使用的产品中有100万行.NET 2.0代码(C#,ASP.NET和VB.NET)。您的公司在过去十年中一直在开发此产品,并且仍在积极添加功能和修复程序。

问题是如何管理.NET框架和.NET 3.5甚至更好4.0的代码升级?完全重写不是一个选项,因为公司没有足够的资源让一些开发人员使用“.NET 4.0版本”,而其他人则使用“.NET 2.0版本”来赚钱。

修改 例如,我们有一个旧的,非常有限的工作流引擎,我们在.NET 1.1天后开发。我们希望能够“升级”应用程序并用Windows Workflow替换此引擎。 开发人员希望利用.NET中的新技术/功能(管理层也希望如此,但没有资源这样做)

编辑2 另一个例子,应用程序中的ASP.NET页面是旧的,不使用母版页。它们是在.NET 1.0 / 1.1天内开发的。我们将编译“切换”为“.NET 2.0”,但我们并没有在2.0功能上进行资本化。将母版页应用到页面大约需要3个月,管理层没有足够的资源(升级不会带来即时资金,而不是开发新功能并将其出售。

谢谢,

6 个答案:

答案 0 :(得分:2)

即使进行了两次编辑,我仍然不清楚这个问题。一方面,要恢复想要迁移应用程序以使用WF或ASP.NET主页等新功能;另一方面,您说没有足够的资源可以迁移到新功能。换句话说,您正在问您可以做些什么来完成您没有足够资源的特定任务。唯一的方法似乎是获得更多资源来进行迁移。

在所有情况下,针对特定版本.NET Framework的旧代码库将适用于没有主要更改的较新版本的框架。您仍然需要做一些更改,但它与重写整个代码库完全不同。在更糟糕的情况下,您需要重写使用折旧类的大块代码(CAS(代码访问安全性:例如沙盒)是一个很好的示例,因为.NET Framework 3.5代码在.NET Framework 4中完全折旧)

在迁移其他库时,您还可以保留一些针对.NET Framework 2.0的库:给定的库可以使用为以前版本的框架编写的库。

这意味着,在您没有足够资源一次迁移100万行代码的情况下,您仍然可以迁移代码的某些部分,然后迁移其他代码等。


在再次重读您的问题之后,我还需要注意几点:

  1. 该产品目前由您的客户使用。 这些客户是否已准备好迁移到最新版本的.NET Framework?如果大公司在大量计算机上使用您的产品,并且他们目前只有.NET Framework 2.0(这也是经常,唉!),如果你告诉他们他们的DBA需要花费数月时间来更新他们的所有机器才能使用你产品的下一版本,他们可能会生气。

  2. 使用WF或masterpages很有趣。但是已经有一个可以正常运行的产品,而已经过测试,包括在生产环境中。是否要使用新功能来降低未来的开发成本,或者是否要使用新功能来使用新功能?如果是最后一种情况,最好继续使用高质量的遗留代码,而不是使用未经测试的代码来使用.NET Framework的最新功能,但在较旧但更成熟的代码工作的情况下会失败。

答案 1 :(得分:1)

您只需将项目目标框架设置为4.0。旧的2.0代码仍然有效,但现在您将拥有额外的3.0,3.5和4.0功能。您可以在任何新代码中使用这些功能,并且在时间允许的情况下,您可以重构/重写一些旧代码。在任何情况下,您都不会“强制”使用4.0功能,而不像从1.0 / 1.1升级到2.0那些具有重大变化的功能。如果您的软件是相对模块化的,具有定义良好的界面,则相对容易重写每个单独的部分而不依赖于其他部分。

这里的关键是版本3.0+是2.0的补充,而不是替换。

答案 2 :(得分:1)

对于它的价值,.NET“版本”升级大多是向后兼容的。在编译现有代码库时,您可能会遇到一些针对已弃用调用的其他警告,但它们通常仍然有效。然而!如果您的代码足够“独特”或“特殊”,我认为它更适合www.thedailywtf.com,那么您可能会遇到一些问题。

在.NET升级方面确实没有什么大不了的,相反,我认为Java版本升级会以新的和神秘的方式破坏。

此外,如果您拥有庞大的客户群,那么设置一台测试机器并试用它应该是微不足道的。通常,您甚至不必重新编译!只需使用旧的二进制文件并在安装了新框架的计算机上运行它们。

答案 3 :(得分:0)

我不确定你的问题到底是什么。你问它的方式,答案是简单地将构建目标定位到新的框架dll。 Visual Studio有一个下拉菜单。

编辑#1:

我认为我现在更了解你的问题了 - 看起来你真的在问'迁移现有代码库以使用新库的最佳做法是什么?'。

.Net允许多重定位。如果您需要,例如,Workflow Foundation,您可以添加一个针对.Net 4.0的项目并包装您想要的功能,然后从现有项目中调用它。我不认为默认情况下私有程序集会对其进行任何类型的版本控制,这几乎是所有零售软件使用的(如果您使用的是GAC,则可能会遇到问题)。

如果您一直在练习基于接口的编程,那么将现有的实现换成简单的.net 4功能包装并且调用代码实际上无法区分,这并不是很好。

听起来好像只是切换整个解决方案的框架目标几乎没有问题,这样就不会给你带来任何版本问题。请注意框架版本之间已经发生变化的行为 - 在我的脑海中,XSLT就是其中之一 - 这可能会破坏代码,这些代码在某种程度上依赖于狡猾的行为。

答案 4 :(得分:0)

我刚刚将我的应用程序测试转换为4.0。在更改一些名称空间之外,更新项目文件以使用.NET 4.0--几乎没有代码可以更改。

与1.1到2.0的转换相比,从2.0到4.0的转换毫不费力。

您的大部分努力都将决定使用哪些新功能。

答案 5 :(得分:0)

您需要确保客户端下载.NET 4.0运行时,以便它们可以运行.NET 4.0应用程序。只需运行Windows更新即可。

将您的应用程序从.NET 2.0升级到更高版本说3.5很容易。您需要将项目的Target Framework切换到.NET 3.5,构建它,并修复任何错误(如果有的话)。