2010-04-26 72 views
6

我正在编写一个针对在.net framework 2.0上运行的程序。如何检查我的程序和.NET Framework版本之间的兼容性?

我在我的VS项目中选择了2.0。

它在我的机器(我的2.0 SP2)上运行良好,所以没有编译错误。但是当我试图在另一台机器上运行它(只有2.0,没有sp)时,它无法运行。我知道我使用了2.0支持的方法,但只支持2.0 SP2。

.net framework 2.0 SP2似乎没有在VS IDE中列出,这就是为什么VS在我的机器上编译它时不能给我任何警告。

如何轻松检查我的代码与.net framework 2.0 SP2的兼容性?或者我只需要看看msdn来检查我使用的每种方法?

感谢

+0

你会得到什么例外? – SLaks 2010-04-26 13:24:03

+0

未找到方法。我已经解决了这个问题,这是我使用错误的方法造成的。 – Jack 2010-04-26 13:25:45

回答

4
+0

谢谢。你的意思是我使用FxCop来分析代码,它会告诉我,如果我从2.0 SP2调用一个方法? – Jack 2010-04-26 13:24:55

+1

更多信息:http://davesbox.com/archive/2008/08/25/new-for-visual-studio-2008-sp1-and-fxcop-1-36-multi-targeting-rule.aspx – Ray 2010-04-26 13:25:17

+0

@Jack : 是的,它会。 – SLaks 2010-04-26 13:25:26

0

如果你确切知道哪些特定的库(DLL)从仅仅2.0区分2.0 SP2,您可以尝试以编程方式查找并加载它们。如果失败,则SP2不存在。

如果没有“新”dll,可以使用反射来检查一个类是否有特定的方法。如果是这样,你有SP2。

这是一个运行时解决方案,因此您可以向用户显示友好的消息。

+0

如果我不知道怎么办?在上面的例子中,我在2.0的库中使用了一些方法,但是编译器并没有告诉我它是用于2.0 SP2的。我只想知道是否有任何简单的方法来知道哪些方法或类是从2.0 SP2或更精确的.net框架版本? – Jack 2010-04-26 13:22:03

+0

@Jack:查看MSDN页面上的方法描述。它总是说哪个框架版本支持它,包括SP数据。 – 2010-04-26 13:23:57

0

当没有sp存在时,您可以识别代码中的错误。

然后,您只需创建一个使用该结构的虚拟片段,并捕获异常。

如果没有发现任何异常,您就可以。 如果抛出异常,您可能会丢失sp2。