1

我正在用 C# 编写代码库,并且在测试 PC 没有安装正确的 .NET 3.5 服务包来运行代码时遇到问题(与此处发生的问题相同:仅在我的机器上发生异常:找不到方法:WaitHandle.WaitOne(Int32) )。我想知道是否有一个静态代码分析工具可以在我的代码中运行,它会告诉我每个单独的模块(或程序集)所需的 .NET 的最低版本。

谢谢。

4

2 回答 2

3

项目属性-> 应用程序-> 目标框架。

于 2010-09-01T09:30:37.690 回答
2

我不知道有任何静态分析工具,但这是我发现的,基于 MSDN 文档和一些博客文章:

  • VS 2008 / VS 2008 SP1+ / VS 2010 ".NET Framework 2.0" - .NET 2.0 RTM
  • VS 2008 / VS 2008 SP1+ / VS 2010 ".NET Framework 3.0" - .NET 3.0 RTM
  • VS 2008“.NET Framework 3.5”-.NET 3.5 RTM
  • VS 2008 SP1+“.NET Framework 3.5”引用System.Data.Entity.dll或使用 ClickOnce - .NET 3.5 SP1
  • VS 2008 SP1+“.NET Framework 3.5”没有参考System.Data.Entity.dll也没有使用 ClickOnce - .NET 3.5 RTM
  • VS 2010“.NET 框架 3.5”-.NET 3.5 SP1
  • VS 2008 SP1+“.NET Framework 客户端配置文件”-.NET 3.5 SP1(客户端)
  • VS 2010“.NET Framework 3.5 客户端配置文件”-.NET 3.5 SP1(客户端)
  • VS 2010“.NET Framework 4.0”-.NET 4.0 RTM
  • VS 2010“.NET Framework 4.0 客户端配置文件” - .NET 4.0 RTM(客户端)

笔记:

  • VS 2008 附带 .NET 3.5 RTM;.NET 3.5 SP1 附带的 VS 2008 SP1;VS 2010 附带 .NET 4.0 RTM。
  • 除非单独安装,否则 VS 2010 无法针对早期版本。
  • 客户端配置文件是在 .NET 3.5 SP1 中引入的
  • VS 2010 是第一个具有可扩展多目标功能的版本(因此——理论上——它可以在没有 VS 更新的情况下定位未来的 .NET 版本)。

我相信 .NET 3.5 SP1 是唯一增加了重要功能的服务包,因此它是唯一会导致MissingMethodException问题的服务包。例如,这意味着 3.0 RTM、3.0 SP1 和 3.0 SP2 具有相同的公共 API。我还没有找到对此的明确确认,但“.NET 中的新功能”文档仅涵盖 2.0/3.5/3.5SP1/4.0,因此这是一个合乎逻辑的结论。

VS 2008 SP1 有一些关于“.NET Framework 3.5”的奇怪规则(仅在实际使用时才尝试以 SP1 为目标),但 VS2010 仅支持以 .NET 3.5 SP1 为目标。

资料来源:

于 2010-09-01T11:20:16.177 回答