繁体   English   中英

过时的含义

[英]The meaning of obsolete

我接管了一个包含很多遗留代码的项目,包括C ++和C#,目前正在VS 2010下编译(在Windows 7上)。

当我构建我的解决方案时,令人惊讶的是,143个项目成功构建。 然而,有一堆警告。 其中有惊人数量的人警告过时的功能。

warning CS0618: 'System.Runtime.InteropServices.UCOMIMoniker' is obsolete
warning CS0618: 'System.Runtime.InteropServices.UCOMIEnumMoniker' is obsolete
warning CS0618: 'System.Runtime.InteropServices.UCOMIRunningObjectTable' is obsolete
warning CS0618: 'System.Runtime.InteropServices.UCOMIRunningObjectTable' is obsolete
warning CS0618: 'System.Runtime.InteropServices.UCOMIBindCtx' is obsolete
warning CS0618: 'System.IO.Path.InvalidPathChars' is obsolete
warning CS0618: 'System.Configuration.ConfigurationSettings.AppSettings' is obsolete
warning CS0618: 'System.Net.Dns.GetHostByName(string)' is obsolete

这是什么意思? 这些函数显然仍然是定义的,或者它们不会编译或者会给我某种“未找到”或“未定义”的错误。 实施是否缺失? 这些功能是否仍然有用(以及以前)?

有几个我抬头看了很长时间它们已经过时了。 例如,GetHostByName:

.NET Framework

Supported in: 1.1
Obsolete (compiler warning) in 4.6
Obsolete (compiler warning) in 4.6
Obsolete (compiler warning) in 4.5
Obsolete (compiler warning) in 4.5.1
Obsolete (compiler warning) in 4.5.2
Obsolete (compiler warning) in 4
Obsolete (compiler warning) in 3.5
Obsolete (compiler warning) in 3.5 SP1
Obsolete (compiler warning) in 3.0
Obsolete (compiler warning) in 3.0 SP1
Obsolete (compiler warning) in 3.0 SP2
Obsolete (compiler warning) in 2.0
Obsolete (compiler warning) in 2.0 SP1
Obsolete (compiler warning) in 2.0 SP2

如果我明白这一点,它在过去的8 - 9年里已经过时了(.NET 2.0于2006年问世)。 为什么没有人修这些? 他们需要修理吗? 当我研究GetHostByName方法时,它被GetHostEntry取代。 很容易......但是坚持下去,有很多人抱怨说它与新功能不一样,也许你应该用GetHostAddresses调用替换它。 好吧,当。

鉴于我的解决方案中有超过28k的文件,我不确定我是否可以直截了当地搞乱这些事情。 有没有办法知道将支持多长时间的功能? 一旦我安装了系统,我是否应该期望它们能够正常工作? 让代码调用过时接口(MSDN)的系统含义是什么?

我不是想了解如何从我自己的系统中删除过时的代码,而是如何系统处理外部系统上的过时接口(例如MSDN)。 他们显然没有遵循标记过时,替换和删除旧接口的简单循环。 他们的政策是什么? MSDN定义的接口的用户应该如何对过时的标记做出反应,特别是当过时的代码没有被'apples to apples'等效函数替换时。

类或方法通常被标记为过时,因为它们将在下一版本中被弃用,或者不再是执行特定任务的最有效方式。 但是,Microsoft经常将这些方法保留很长时间以保证向后兼容性。

在编程中,术语'OBSOLETE'意味着它已弃用或旧的程序集/资源/函数/类型,它意味着编译器会注意到有更好或更新的方法。 示例:PHP的mysql_query()函数。

我同意上述所有答案。 我建议最重要的是,当编译器抱怨过时的方法是一个警报,继续使用SDK中提供的替代方法替换它。 如果您不打算将项目升级到较新的.NET框架,那么您可以在生命周期中使用此警告。

暂无
暂无

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

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