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

Silverlight程序集与“普通”.NET程序集不兼容的原因

  •  6
  • Konstantin  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  9
  •   JustinAngel    16 年前

    好的,好问题。

    事实: CLR有一个漂亮的铰接系统,称为“ ".
    每个程序集都有一个作为DLL/EXE的一部分嵌入的程序集清单。
    程序集清单包含一系列内容(嵌入资源的名称、类型系统信息等),以及此程序集需要哪些其他程序集。

    是CLR的一部分,负责获取该程序集清单依赖项并查找相应的物理文件。

    桌面.Net CLR上Silverlight程序集的Fusion-仅此而已。(假设存在所有依赖项)


    主要是因为.NETBCL(基类库)DLL不存在。如前所述,它是一个不同的mscorlib.dll、agcorlib.dll、System.dll、System.Windows.dll等。
    主要地 安全普通的BCLdoes使用指针、特定于平台的p/调用、文件、注册表等各种讨厌的东西。我们不能让它只运行浏览器。



    桌面程序集-->在Silverlight CLR==上运行不起作用

    如果您想要在桌面CLR上运行Silverlight程序集的真实示例,请查看我一年前的文章@ SILVERLIGHT DLLS ON THE DESKTOP CLR

        2
  •  0
  •   AnthonyWJones    16 年前

    IL代码是相同的。但是核心库是不同的,因此即使是为.NET编译的库中最简单的操作也无法在Silverlight中工作,因为该库将引用Silverlight中不存在的外部库。

        3
  •  0
  •   Boris Modylevsky    16 年前

    不兼容,因为Silverlight使用了mscorlib.dll的轻量级版本。不过,您可以使用一些技巧重用为Silverlight上的“normal.NET”编写的代码。