我接手了一个包含大量遗留代码的项目,包括 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 年里已经过时了(.NET 2.0 于 2006 年推出)。为什么没有人修复这些?他们需要修理吗?当我研究 GetHostByName 方法时,它被 GetHostEntry 取代了。很简单...但是等一下,有很多人提示它与新功能的工作方式不一样,也许您应该用对 GetHostAddresses 的调用来代替它。好吧,该死。
考虑到我的解决方案中有超过 28k 个文件,我不确定我是否可以随便乱搞这些东西。有没有办法知道过时的功能将支持多长时间?我是否应该期望这些在我安装系统后还能工作?让代码调用过时接口(interface) (MSDN) 对系统有何影响?
我并不是想了解如何从我自己的系统中删除过时的代码,而是系统应该如何处理外部系统(例如 MSDN)上过时的接口(interface)。他们显然没有遵循标记过时、替换和删除旧接口(interface)的简单循环。他们的政策是什么? MSDN 定义的接口(interface)的用户应该如何对过时的标记使用react,特别是当过时的代码没有被“同类”等效功能替换时。
最佳答案
类或方法通常会被标记为过时,因为它们将在下一个版本中被弃用,或者不再是执行特定任务的最有效方法。但是,Microsoft 经常将这些方法保留很长时间以保证向后兼容性。
关于c# - 过时的意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781018/
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
已经有一个问题回答了如何将“America/Los_Angeles”转换为“PacificTime(US&Canada)”。但是我想将“美国/太平洋”和其他过时的时区转换为RailsTimeZone。我无法在图书馆中找到任何可以帮助我完成此任务的东西。 最佳答案 来自RailsActiveSupport::TimeZonedocs:TheversionofTZInfobundledwithActiveSupportonlyincludesthedefinitionsnecessarytosupportthezonesdefinedb
这个问题在这里已经有了答案:WhatisRuby'sdouble-colon`::`?(12个答案)关闭8年前。什么是::?@song||=::TwelveDaysSong.new
这个问题在这里已经有了答案:Whatdoes`if__FILE__==$0`meaninRuby(6个答案)关闭6年前。我在审查Ruby代码时偶然发现了这个语法。代码是:if__FILE__==$PROGRAM_NAME#somecode...end我想__FILE__是一个变量,可以让我获取我所在文件的名称?但是$PROGRAM_NAME简化了什么?另外,为什么这个if语句是必需的,因为程序可以使用或不使用它?
我在一个我想在formtasticGem中覆盖的方法中找到了这个。该方法如下所示:defto_htmlinput_wrappingdohidden_field_html是什么意思?在第三行做什么?我知道它对数组有什么作用,但在这里我不知道。 最佳答案 你可以这样读:hidden_field_htmllabel_with_nested_checkbox是连接到hidden_field_html末尾的参数-为了“清晰”,他们将其分成两行 关于ruby-on-rails-没有参数的`
我正在尝试学习Ruby词法分析器和解析器(whitequarkparser)以了解更多有关从Ruby脚本进一步生成机器代码的过程。在解析以下Ruby代码字符串时。defadd(a,b)returna+bendputsadd1,2它导致以下S表达式符号。s(:begin,s(:def,:add,s(:args,s(:arg,:a),s(:arg,:b)),s(:return,s(:send,s(:lvar,:a),:+,s(:lvar,:b)))),s(:send,nil,:puts,s(:send,nil,:add,s(:int,1),s(:int,3))))任何人都可以向我解释生成的
谁能帮我理解下面的表达方式?printf("%3d-%s\n",counter,name)该行打印类似这样的内容6-安装Adobe软件我查阅了资料并阅读了引用资料,但找不到简单的答案,我有点困惑。如果你能给我一个好的引用,请这样做。%3d好的,根据我的理解,%3d是字符数或空格数。请指出解释它的引用资料。%s\n我不知道这是做什么的。我猜\n是一个换行符或类似的东西,但通过查看输出,它似乎并不像那样工作。为什么counter和name变量用逗号分隔?通过查看输出,似乎%3d被替换为counter而%s\n被替换为名称。我不确定它是如何工作的,但我想了解它。
我是ruby语言的新手,所以当我尝试按值对哈希进行排序时我用这个方法排序:movie_popularity.sort_by{|m,p|p}.reverse但是sort方法返回一个数组,而我需要返回一个散列,所以我使用了这个命令:movie_popularity=Hash[*movie_popularity.sort_by{|m,p|p}.reverse.flatten]我的问题是上面一行中的*和flatten是什么意思?谢谢=) 最佳答案 *被称为“splat运算符”;我不确定我能否给你技术上的定义(虽然我相信你会在谷歌的帮助下