【问题标题】:How to Check .Net 2.0 assembly for Calls to .Net 3.5如何检查 .Net 2.0 程序集是否调用 .Net 3.5
【发布时间】:2010-05-06 23:33:57
【问题描述】:

我发现了一个问题,我认为程序集在仅限 .Net2.0 的环境中调用 .Net3.5 方法。 (没有安装 .Net 服务包,也没有安装 .Net 3.5)

我想知道是否有任何程序可以像 FXCop 一样运行,以检查程序集是否遵守仅在未添加 3.5 扩展的情况下进行 .Net 2.0 中可用的方法调用。

我以前也被这个问题困扰过,我希望有一种方法可以检查程序集,以便在它们发布之前对其进行检查以防止出现此类问题。

请不要说需要 .Net 3.5,因为虽然我想这样做,但目前还不可能。

【问题讨论】:

    标签: .net


    【解决方案1】:

    没有“.NET 3.5 方法”之类的东西,只有 .NET 3.5 程序集。添加到 .NET 2.0 版本中,就像 .NET 3.0 一样。基本 2.0 类和 CLR 没有改变,使用 Visual Studio 中的目标框架版本功能可以轻松避免使用仅在 .NET 3.5 中可用的类型的方法。

    嗯,这是公司的路线。这不是很准确,他们实际上确实在几个选定的位置更改了 2.0 程序集。不改[AssemblyVersion],很调皮。最好的例子是 WaitHandle.Wait(int)。它在最初的 2.0 版本中不存在,它是在 3.5 中添加的

    他们通过同时发布 .NET 2.0 SP1 和 .NET 3.5 来解决这个问题,它确实有添加的方法。再次使用 .NET 3.5 SP1,同时使用 .NET 2.0 SP2。 Fwiw,这些服务包不仅添加了缺失的方法,还修复了已知的稳定性和安全问题。

    据我所知,没有工具可以检查您的代码在 .NET 2.0 RTM 时是否失败。客户端应该部署服务包。它们很难避免,Windows 更新推动它们。如果您想支持拒绝部署更新的客户端,那么您必须在原始 .NET 2.0 安装上测试您的代码。

    【讨论】:

    • 是的,通过那个 atm 工作。我只是希望通过 .net 完全卸载,其他一些 Windows 更新已经更正了其他地方没有修复。我无权访问用户系统以执行这些检查。
    【解决方案2】:

    在 Visual Studio 中,您可以在应用程序的属性中指定目标框架。转到“应用程序”选项卡并将“目标框架”从“.NET Framework 3.5”更改为“.NET Framework 2.0”。如果您尝试引用 2.0 之外的任何内容,重新编译,编译器将发出错误。

    【讨论】:

    • 我只使用VS2005,所以我没有那个选项:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多