我如何有效地确定我的.net框架库调用的所有方法在.net标准2.0/2.1中没有真正实现?



如何有效地预先确定(例如,在等待运行时错误涌入之前;理想情况下,在做代码转换之前)我的。net框架库调用的所有方法实际上并没有在。net标准2.0/2.1中实现?可移植性分析器只告诉你该方法是否根本不存在(不会编译);编译器只告诉你什么不能编译;但是这两种方法都不会告诉您哪些方法的功能被破坏了,如果您的代码碰到它,就会产生运行时错误。我不想让我的用户发现这样的定时炸弹……虽然我认为我的单元测试和自动化UI测试将覆盖100%的代码,但我们大多数人还没有完全实现这一点。

所以,我希望有人知道一个分析器,突出的东西在那里,但没有实现?…或者甚至有一个简单的方法列表,在那里,但不工作?或者有任何其他工具/方法可以预先找到这些?

正如需要的证据…几个月前,我使用了可移植性分析器,它告诉我需要修复什么才能将。net框架库转换为。net标准2.0…还不错……所以,我做了。编译器根据特定的参数列表发现了一些其他问题。好了,修好了。所有的编译。所有的测试都很正常。所以,我认为我很好。因此,一个月前,我开始将我们的应用程序转换为。net 5,构建在新转换的。net标准2.0库上。但是今天我得到了"幸运"。并发现,尽管它编译得很好,但它永远不会真正工作……线程。Abort不做它应该做的事情(即,将ThreadAbortException注入目标线程),而是对该线程不做任何事情,更糟糕的是在调用线程上抛出PlatformNotSupportedException。天哪。很高兴我比我的顾客先发现这点。但我想知道有多少其他方法在。net标准2.0下同样编译得很好,但却被类似地破坏了,以至于它们实际上不能正常工作。如果可移植性分析器告诉我……或者任何其他可能存在的工具/方法)

啊,quaabaam的评论/链接是一个比我之前发现的更好的概述,因为它包含了我一直缺少的两件事:


https://learn.microsoft.com/en-us/dotnet/core/compatibility/unsupported-apis

并提到了"平台兼容性分析器";这与"不同。. NET可移植性分析器。要在。net Standard x.x项目(或正在考虑转换的。net Framework项目)中启用该功能,请添加。编辑配置文件到您的项目,使用以下行:

dotnet_code_quality.enable_platform_analyzer_on_pre_net5_target=true

谢谢quaabaam ! !我有几十篇关于如何转换的文章/帖子/MS-docs,但没有一个提到这一点!

最新更新