我在我的机器上使用3.5 SP1,而我们的客户目前使用3.5不带SP1.我不知道VS2008中的任何方法将解决方案或项目定位到没有SP1的3.5,只安装了我带有SP1的3.5.
如果我们使用3.5 w/o SP1中不可用的函数或构造函数,代码将无法正常工作.
也就是说,我想在编译时检测没有SP1的情况会有什么效果.
到目前为止,我们已经完成了测试(在VM或单独的机器中)以查看应用程序是否中断,并且当我们使用的部分API在SP1之前不可用时,它确实会中断.问题是它只在代码实际运行时(在运行时),而不是在加载程序集时中断.
一种解决方案是使用VS2008 w/o SP1的机器并尝试编译项目.但是,我希望通过分析源代码或我们生成的程序集来帮助我检测对3.5 SP1的依赖性(由于使用新的API,或其他).
我的谷歌权力对这个问题,任何提示都不够强大?
我遇到了同样的问题,我找到了解决方案.对于我们的应用程序,它是一个调用System.Threading.WaitHandle.WaitOne(Int32)让我们陷入困境.有关如何在没有Visual Studio注意的情况下将Service Pack版本中引入的API引用泄漏到代码中的更多详细信息,请参阅Krzysztof Cwalina的帖子.
好消息是,正如Marc提到的那样,FxCop有一个新的规则来检测这些泄漏.坏消息是,当您使用.NET Framework 3.5时,FxCop 1.36中的规则被破坏了.但是,David Kean描述了如何编辑几个XML配置文件来解决问题.我按照说明操作,现在FxCop检测到我对Service Pack API的引用.