Kom*_*ner 7 .net c# compatibility target
我是一名软件测试员.我得到了一个可执行文件来测试给定的机器.在测试中,可执行文件表现得很糟糕,任何人都无法解释.
经过大量的研究和调试后,我找到了原因:为.NET目标框架4.6构建的可执行文件,但该机器配备了.NET 4.5.这为"string.Format()"等简单的方法产生了一些"MissingMethodExeception".一些try-catch捕获了这些异常,但是以错误的方式处理它们,因为没有人预料到它们会发生.
这里也描述了同样的问题:
找不到方法:'System.String System.String.Format(System.IFormatProvider,System.String,System.Object)
我的问题:
(我希望VisualStudio中有一个复选框"如果目标网络不可用则不执行"?!)
Windows不是要警告我吗...
您肯定会收到警告,不是来自 Windows,而是来自 CLR。该对话框如下所示,单击“是”会自动获取在计算机上部署和安装所需的框架版本。CLR 通过查找程序集中嵌入的[TargetFramework] 属性来执行此检查。如前所述,运行 ildasm.exe 来验证此属性。期望它丢失或具有足够低的值,因此对话框不会触发。
一般来说,处理这个问题的最佳实践是什么?
这是程序错误,程序集构建错误。您非常确信编译器使用的引用程序集仅适用于 .NET 版本 4.6。这必须追溯到构建它的机器,很可能是构建服务器。它的设置不正确,当构建工程师通过避免使用 Visual Studio 的许可副本来走捷径时,这种事故很常见。或者由于偏爱免费软件工具,Jenkins 成为了常见的祸害。
除了 [TargetFramework] 属性错误或丢失之外,这种特殊的事故特别容易引发。所需要做的就是使用 c:\windows\microsoft.net\framework 中的程序集作为参考程序集,而不是需要目标包并安装在 c:\program files (x86)\reference assembly 目录中的正确程序集。 此问答有更多线索。
修复构建服务器往往会遇到很多阻力,作为测试人员最好的做法是提交错误报告。您还想为损坏的一揽子异常处理编写一个,该异常处理使问题如此难以诊断。
归档时间: |
|
查看次数: |
620 次 |
最近记录: |