过时的含义
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框架
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年里已经过时了(.NET2.0于2006年问世)。为什么没有人修理这些?它们需要修理吗?当我研究GetHostByName方法时,它被GetHostEntry取代了。很简单。。。但是等一下,有很多人抱怨它与新函数不一样,也许你应该用对GetHostAddresses的调用来代替它。哦,该死。
考虑到我的解决方案中有超过28k个文件,我不确定我是否可以随意地去处理事情。有没有办法知道过时的功能将被支持多久?一旦我安装了系统,我是否应该期望这些功能能够正常工作?让代码调用过时的接口(MSDN)对系统有什么影响?
我并不是想了解如何从自己的系统中删除过时的代码,而是系统应该如何处理外部系统(例如MSDN)上过时的接口。他们显然没有遵循标记过时、替换和删除旧接口的简单循环。他们的政策是什么?MSDN定义接口的用户应该如何对过时的标记做出反应,尤其是当过时的代码没有被"苹果对苹果"等效函数替换时。
类或方法经常被标记为过时,因为它们将在下一个版本中被弃用,或者不再是执行特定任务的最有效方法。然而,为了保证向后兼容性,微软经常将这些方法保留很长一段时间。
在编程中,术语"OBSOLETE"意味着程序集/资源/函数/类型是不推荐使用的或旧的、已翻译的。这意味着编译器会注意到有更好或更新的方法可以做到这一点。示例:PHP的mysql_query()函数。
我同意以上所有答案。最重要的是,当编译器抱怨过时的方法时,我会发出警报,用SDK中提供的替代方法替换它。如果您不打算将项目升级到较新版本。NET框架,那么你就可以终生接受这个警告了。
- 针对过时的模板显式实例化进行编译
- C++使用现代编译器编译的项目,但链接到过时的libstdc++
- 无法使用 openssl 服务器,因为密码已过时...什么的...ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- 移动构造函数是否C++过时?
- decltype(auto) 是否使尾随返回类型过时?
- C++ 每次字符串通过时递减值
- 过时的编码(C )的确切含义是什么?
- 赫伯·萨特在 GotW #35 中关于字体名的代码笑话过时了吗?
- 检查动态链接库是否已过时
- 这个项目已过时
- 过时的含义
- VS2010:项目已过时
- 错误:过时的旧式基类初始值设定项
- 自lambdas进入C++以来,“回调”接口是否已过时
- HANDLE(IntPtr)已过时,kernel32.dll,安全文件句柄到IntPtr
- 简单的代码,看似随机的结果——这是由于过时的引用造成的吗
- 让年龄过时的结构
- 既然智能指针已经存在,那么使用C型指针是不是已经过时了
- TCP 连接已接受,但写入数据会导致它使用过时的连接
- 我是否仍然需要多线程或它已经过时了