我在我的机器上使用3.5 SP1,而我们的客户当前使用不带SP1的3.5。
我不知道在VS2008中将解决方案或项目定位到不带SP1的3.5的任何方法,我只安装了带SP1的3.5。
如果我们使用3.5 w/o SP1中没有的函数或构造函数,则代码将无法正常工作。
也就是说,我想在编译时检测到,如果没有SP1,那将无法工作。
到目前为止,我们已经完成了测试(在VM或单独的计算机中)以查看应用程序是否损坏,并且当我们使用了直到SP1才可用的API部分时,它有时确实会损坏。问题在于,它只会在代码实际运行时(在运行时)中断,而不会在程序集加载时中断。
一种解决方案是拥有一台装有VS2008 w/o SP1的计算机,然后尝试编译该项目。
但是,我希望通过分析源代码或我们生成的程序集,使用一些工具来帮助我检测对3.5 SP1的依赖关系(由于使用新的API或其他原因)。
对于这个问题,我的google功能还不够强大,有什么提示吗?
最佳答案
我只是遇到了同样的问题,所以找到了解决方案。对于我们的应用程序,这是对System.Threading.WaitHandle.WaitOne(Int32)的调用,这使我们陷入了麻烦。有关Service Pack版本中引入的对API的引用如何在不通知Visual Studio的情况下泄漏到您的代码中的更多详细信息,请参见Krzysztof Cwalina's post。
好消息是,作为Marc mentioned is his answer,FxCop具有一个new rule来检测这些泄漏。坏消息是,当您以.NET Framework 3.5为目标时,该规则在FxCop 1.36中被破坏。但是,David Kean介绍了如何将几个XML配置文件编辑为fix the problem。我按照说明进行操作,FxCop现在可以检测到对Service Pack API的引用。
关于.net - 检测.NET Framework 3.5 SP1依赖关系(无SP1的cmp。3.5),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/233211/