代码之家  ›  专栏  ›  技术社区  ›  TruMan1

Bin DLL的目标是不同的.NET框架吗?

  •  1
  • TruMan1  · 技术社区  · 14 年前

    我有一个网站,目前正在.NET3.5下运行。我正在考虑让它在4.0下运行,但我使用了许多第三方DLL进行压缩,一点点地如果这些DLL是为.NET3.5(在VS2008中)创建的,它们是否会继续在3.5下运行?或者4.0是否向后兼容旧库?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    如果这些DLL是为.NET 3.5(在VS2008中)创建的,它们是否会继续在3.5下运行?

    不存在低于3.5的情况。NET程序集根据.NET版本编译,然后由CLR加载和执行。NET 3.5使用CLR 2.0,.NET 4.0使用CLR 4.0。

    因此,如果您的应用程序在CLR 4.0下运行,那么这些程序集将在CLR 4.0下运行,CLR 4.0与根据.NET 3.5编译的程序集向后兼容。如果这些程序集调用非托管函数,则可能会有一些警告,否则它们应该可以正常工作。

    去试试看。

        2
  •  0
  •   Jon Skeet    14 年前

    如果它们是纯托管代码,我会 它们在.NET4下工作得很好。如果它们使用非托管API,我相信可能会有一些问题,您可能需要重建这些库—但是如果它们是开源的,那应该不是问题。

    (我知道有一个数据库提供商至少直到最近才提供.NET3.5DLL,而它们在.NET4中不起作用,正是因为它们通过P/Invoke使用非托管API。不幸的是,我不知道那个地区发生了什么变化,我倾向于避免P/Invoke,就像瘟疫一样:)