我是一名软件测试员。我得到了一个可执行文件来测试给定的机器。在测试中,可执行文件表现得很糟糕,任何人都无法解释。
经过大量的研究和调试后,我找到了原因:为.NET目标框架4.6构建的可执行文件,但该机器配备了.NET 4.5。 这产生了一些" MissingMethodExeception"对于像#34; string.Format()"这样的简单方法。一些try-catch捕获了这些异常,但是以错误的方式处理它们,因为没有人预料到它们会发生。
这里也描述了同样的问题:
我的问题:
(我本来期望像复选框那样的东西"如果目标网络不可用则不执行"在VisualStudio中?!)
答案 0 :(得分:1)
Windows不是要警告我......
您当然应该收到警告,不是来自Windows,而是来自CLR。对话框looks like this,单击是自动获取在计算机上部署和安装的所需框架版本。 CLR通过查找程序集中嵌入的[TargetFramework] attribute来执行此检查。如上所述,运行ildasm.exe以验证此属性。期望它丢失或具有足够低的值,因此对话框不会触发。
一般来说,处理这个问题的最佳做法是什么?
这是程序错误,程序集错误。您非常确信编译器使用的引用程序集仅适用于.NET 4.6版。这必须追溯到构建它的机器,最有可能是构建服务器。它没有正确设置,当构建工程师通过避免使用Visual Studio的许可副本而偷工减料时,这种常见的事故很常见。或者通过偏爱免费软件工具,詹金斯是一个普遍的祸害。
除了使[TargetFramework]属性错误或缺失之外,这种特殊的不幸事件特别容易诱发。所需要的只是使用c:\ windows \ microsoft.net \ framework中的程序集作为引用程序集,而不是需要目标程序包的正确程序集,并安装在c:\ program files(x86)\ reference assemblies目录中。 This Q+A有更多潜在客户。
修复构建服务器往往会有很多阻力点,最好的办法是作为测试人员提交错误报告。您还想为破解的catch-em-all异常处理编写一个异常处理,使问题难以诊断。
答案 1 :(得分:-1)
回答问题:
第二个问题......